I am very new to the ALC designer and have only worked in a limited range to create fields and map those fields directly to an element in the schema.
My xml instance looks like the below
<person>
<PersonAddress>
<AddressType>Home</AddressType>
<Address>123 Street, Sandiego, California</Address>
</PersonAddress>
<PersonAddress>
<AddressType>Mailing</AddressType>
<Address>123 Street, Sandiego, California</Address>
</PersonAddress>
<PersonAddress>
<AddressType>Employer</AddressType>
<Address>123 Street, Sandiego, California</Address>
</PersonAddress>
<person>
The Address information does not need to come in the same order as above and in some instances one of the addres might not be there.
I have an existing PDF which has been imported as an artwork. It has 3 checkboxes, EmployerAddress Checkbox, Mailing Addres Checkbox and Home Address Checkbox
I would like the checkboxes to be turned on if the corresponding Address type is present in the instance. Moreover there is a text area next to each checkboxes for the related addresses.
What is the easiest way to acheive this without doing an xslt to transform the existing instance into another.
Thanks is advance for your comments/responses.
Solved! Go to Solution.
Views
Replies
Total Likes
Hi,
So I'm guessing it is valid to have a PersonAddress element without an AddressType element. The predicate is going to go though your dataset and evaluate the expression for each PersonAddress.
So if AddressType is optional you will need to guard against this error, something like;
$.PersonAddress.[if (Exists(AddressType)) then AddressType=="Home" endif].Address
Also is the AddressType value Mail or Mailing? The error message does not match the original XML.
Regards
Bruce
Views
Replies
Total Likes
Hi,
The text fields could be bound to an Address element with a predicate expression, so for the home address use;
$.PersonAddress.[AddressType=="Home"].Address
I don't think you will be able to bind the checkboxes, but you could populate them in the calculate event with this FormCalc;
HasValue(Home)
Where "Home" is the name of the text field that has the binding expression above.
Bruce
Views
Replies
Total Likes
Thank you Bruce, With your help I was able to get it working for the Home Check box. However when I replicated the same for the Mail and Employer by changing the qualifier only it is giving me the following error
Generating PDF Document...
PDF generated successfully.
Generating PDF Document...
Script failed (language is formcalc; context is xfa[0].datasets[0].data[0].PersonAddress[0].)
script=AddressType=="Mail"
Error: accessor ' AddressType' is unknown.
Malformed SOM expression:
$.PersonAddress.[AddressType=="Mail"].Address
Error: accessor 'AddressType ' is unknown.
End of processing: Failure
Moreover when I remove the mail and employer reated it works for home. It seems like it does not like me using the same element for more than one fields.
Please assist.
Views
Replies
Total Likes
Hi,
So I'm guessing it is valid to have a PersonAddress element without an AddressType element. The predicate is going to go though your dataset and evaluate the expression for each PersonAddress.
So if AddressType is optional you will need to guard against this error, something like;
$.PersonAddress.[if (Exists(AddressType)) then AddressType=="Home" endif].Address
Also is the AddressType value Mail or Mailing? The error message does not match the original XML.
Regards
Bruce
Views
Replies
Total Likes
Thank you Bruce, you were right with the value "Mailing". I corrected that and it seems to work. I have also put in the If statement you suggested since the field is optional.
Thanks once again. Malavika
Views
Replies
Total Likes
Views
Likes
Replies
Views
Likes
Replies