Hi Ralph,
As you specified a xf:group/@ref, everything inside this group starts from that
point (you keep the context)
You can try this - the node you want to repeat is your context node ('.' With
Xpath ) :
<xf:group id="pers" ref="instance('template')/listPerson/person">
<label>So this bit now works!</label>
<xf:repeat id="repeat" nodeset=".">
[…]
</xf:repeat>
[…]
</xf:group>
Or - you change your xf:group/@ref for the parent node listPerson, and you
repeat the child node person :
<xf:group id="pers" ref="instance('template')/listPerson">
<label>So this bit now works!</label>
<xf:repeat id="repeat" nodeset="person">
[…]
</xf:repeat>
[…]
</xf:group>
Same idea for the repeat of occupation, as you already start from the node
person, you just need to write : @nodeset=‘occupation'
For the repeat, I think, at the beginning, you should be verbose to understand
how it works :
<insert context="."
origin="instance('template')/listPerson/person/occupation"
nodeset="occupation"
at="index('repeat-occ')"
position="after"
ev:event="DOMActivate" />
To simplify, @context = your evaluation context (the node person in that case),
@origin = the node you want to copy (you can take it from another instance),
@nodeset = your target for the copy (here your will copy a new occupation node
after (@position=after) the node occupation (@nodeset) with
position()=index(‘repeat-occ’) (@at='index(‘repeat-occ')') )
Let’s try and keep us informed.
Best,
Josselin.
> Le 11 févr. 2021 à 18:54, Ralph Corrigan <[email protected]> a écrit :
>
> Hi again
> I wasn't wrong.
>
> I'm sure that this is going to be Xpath errors in the <trigger> but <repeat>
> is not happening. I've stripped back the model (and added a couple of other
> bits) and working round different Xpath permutations for the groups/elements
> has given me some confidence in that. But the triggers, while rendering fine,
> don't do anything.
>
> As always, any help gratefully appreciated
>
> Ralph
>
>
> <?xml-stylesheet href="xsltforms/xsltforms.xsl" type="text/xsl"?>
> <?xsltforms-options debug="yes"?>
> <html xmlns="http://www.w3.org/1999/xhtml"
> xmlns:xf="http://www.w3.org/2002/xforms"
> xmlns:ev="http://www.w3.org/2001/xml-events"
> xmlns:xsd="http://www.w3.org/2001/XMLSchema">
>
> <head>
> <title> New Person</title>
> <xf:model>
>
> <xf:instance id="template">
> <items xmlns="">
> <listPerson>
> <person xml:id="Unique name" sex="Sex">
> <persName><forename>Forename</forename><surname>Surname</surname></persName>
> <occupation><rolename></rolename></occupation>
> </person>
> </listPerson>
> </items>
> </xf:instance>
> <xf:submission id="s01" method="post" show="new" replace="all"
> action="xsltforms/txs.php?exec=beautify.txs">
> <xf:message level="modeless" ev:event="xforms-submit-error">Submit
> error.</xf:message>
> </xf:submission>
> </xf:model>
>
> </head>
> <body>
> <xf:group id="pers" ref="instance('template')/listPerson/person">
> <label>So this bit now works!</label>
> <xf:repeat id="repeat" nodeset="instance('template')/listPerson/person">
> <xf:input ref="@xml:id"><xf:label>Unique name</xf:label></xf:input>
> <xf:input ref="persName/forename"><xf:label>Forename</xf:label></xf:input>
> <xf:input ref="persName/surname"><xf:label>Surname</xf:label></xf:input>
> <xf:select1 ref="@sex" appearance="minimal">
> <xf:label>Sex</xf:label>
> <xf:item>
> <xf:label>Male</xf:label>
> <xf:value>1</xf:value>
> </xf:item>
> <xf:item>
> <xf:label>Female</xf:label>
> <xf:value>2</xf:value>
> </xf:item>
> <xf:item>
> <xf:label>Unknown</xf:label>
> <xf:value>0</xf:value>
> </xf:item>
> </xf:select1>
>
> <xf:group id="occupation">
> <xf:repeat id="repeat-occ"
> nodeset="instance('template')/listPerson/person/occupation">
> <xf:input ref="rolename"><xf:label>Role</xf:label></xf:input>
> </xf:repeat>
> <xf:trigger>
> <xf:label>New role</xf:label>
> <insert nodeset="instance('template')/listPerson/person/occupation"
> at="index('repeat-occ')"
> position="after" ev:event="DOMActivate" />
> </xf:trigger>
> </xf:group>
>
> </xf:repeat>
> <xf:trigger>
> <xf:label>New</xf:label>
> <insert nodeset="instance('template')/listPerson/person" at="index('repeat')"
> position="after" ev:event="DOMActivate" />
> </xf:trigger>
> </xf:group>
>
> <xf:submit submission="s01">
> <xf:label>View</xf:label>
> </xf:submit>
> </body>
> </html>
>
>
>
>
>
>
>
> On 10/02/2021 21:40, Ralph Corrigan wrote:
>
>> Many thanks Josselin, I stupidly didn't realise that the whole Xpath was
>> required.
>>
>> That's rendering fine now, so on to the <repeat> sections. I fear I may be
>> in touch again, though...
>>
>> Thanks again
>> Ralph
>>
>>
>>
>> On 10/02/2021 20:09, Josselin Morvan wrote:
>>
>> Hi Ralph,
>>
>> I don't know if your are trying to work with the first instance (we cannot
>> access to the listPerson.xml file) or your #template instance, but I suspect
>> an error with your Xpath.
>>
>> If your listPerson is a XML-TEI file, your xml-tree should be something like
>> :
>> <TEI xmlns="http://www.tei-c.org/ns/1.0 <http://www.tei-c.org/ns/1.0>">
>> <teiHeader/>
>> <text>
>> <body>
>> <listPerson>
>> <person>
>> <!-- person 1 -->
>> <persName>
>> <surname></surname>
>> <forename></forename>
>> </persName>
>> </person>
>> </listPerson>
>> </body>
>> </text>
>> </TEI>
>> Then if you want to target the surname and forename tags, your Xpath should
>> be something like /TEI/text/body/listPerson/person/persName/surname and
>> /TEI/text/body/listPerson/person/persName/forename. You can use
>> xf:group/@ref to shorten your link :
>> <xf:group ref="/TEI/text/body/listPerson/person/persName">
>> <label>why does this not work?</label>
>> <xf:input ref="forename"><label>Forename</label></xf:input>
>> <xf:input ref="surname"><label>Surname></label></xf:input>
>> </xf:group>
>>
>> If your are trying to work with your #template instance, your Xpath is also
>> wrong and as it is not your first instance, you need to specify it in the
>> @ref :
>>
>> <xf:group
>> ref="instance('template')/TEI/text/body/listPerson/person/persName">
>> <label>why does this not work?</label>
>> <xf:input ref="forename"><label>Forename</label></xf:input>
>> <xf:input ref="surname"><label>Surname></label></xf:input>
>> </xf:group>
>>
>> I think you'll also have to correct your xpath with your trigger to insert a
>> new person.
>>
>> Finally, if you plan to manage more than one person at a time, you should
>> take a look at the xf:repeat element.
>> (https://www.w3.org/TR/xforms11/#ui-repeat
>> <https://www.w3.org/TR/xforms11/#ui-repeat>)
>>
>> If you declared a namespace (with listPerson.xml ?) it can also be the
>> origin of your issue as some browsers don't handle the namespace
>> declarations very well, but first let's try with corrected Xpath and keep us
>> informed!
>>
>>
>> Best,
>> Josselin.
>>
>> Le 10 févr. 2021 à 19:04, Ralph Corrigan <[email protected]
>> <mailto:[email protected]>> a écrit :
>>
>> Hi,
>> Apologies for this as I'm sure that I'm missing something extremely basic,
>> but I'm having problems with implementing Xsltforms running via an Apache
>> server on a Synology NAS (for now). I'm totally new to Xforms (in any
>> implementation) but have been working with TEI xml and fetchXML for a couple
>> of years, so I'm comfortable with that side of things.
>>
>> All of the test forms downloaded with the implementation work fine - they
>> have no problems at all. However, apparently simple changes cause the form
>> to either not render at all (without error message) or with key parts
>> missing.
>>
>> In the following example, I've changed some bits of Steve Pemberton's
>> 'todo.xml'. This form is a partial success in that the form does render, and
>> the s01 submission demonstrates that the src xml has been found and read.
>> However, the input fields (and I've deliberately kept this short after the
>> full model failed) do not appear (see image). There are no errors in the
>> trace log and the profiler recognises that the 2 input fields exist. They
>> just aren't being displayed.
>>
>> This problem is happening on all the examples I modify - I would understand
>> it (more) if the triggers failed as I'm new to this, but failing to even
>> render input/label seems really odd (and suggests that I'm making a very
>> basic error)!
>>
>> Any help gratefully received
>>
>> Ralph
>>
>>
>> <?xml-stylesheet href="xsltforms/xsltforms.xsl" type="text/xsl"?>
>> <?xsltforms-options debug="yes"?>
>> <html xmlns="http://www.w3.org/1999/xhtml
>> <http://www.w3.org/1999/xhtml>"
>> xmlns:xf="http://www.w3.org/2002/xforms <http://www.w3.org/2002/xforms>"
>> xmlns:ev="http://www.w3.org/2001/xml-events
>> <http://www.w3.org/2001/xml-events>"
>> xmlns:xsd="http://www.w3.org/2001/XMLSchema
>> <http://www.w3.org/2001/XMLSchema>">
>> <head>
>> <title> New Person</title>
>> <xf:model>
>> <xf:instance src="listPerson.xml
>> <http://192.168.0.10/ralphy/xslt/listPerson.xml>"/>
>> <xf:instance id="template">
>> <items xmlns="">
>> <TEI><text><body><listPerson>
>> <person>
>>
>> <persName><forename>Forename</forename><surname>Surname</surname></persName>
>> <occupation><rolename></rolename></occupation>
>> </person>
>> </listPerson></body></text></TEI>
>> </items>
>> </xf:instance>
>> <xf:submission id="save" method="put" action="listperson.xml"
>> replace="none"/>
>> <xf:submission id="s01" method="post" show="new" replace="all"
>> action="xsltforms/txs.php?exec=beautify.txs">
>> <xf:message level="modeless" ev:event="xforms-submit-error">Submit
>> error.</xf:message>
>> </xf:submission>
>> </xf:model>
>>
>> </head>
>> <body>
>> <xf:group>
>> <label>why does this not work?</label>
>>
>> <xf:input ref="forename"><label>Forename</label></xf:input>
>> <xf:input ref="surname"><label>Surname></label></xf:input>
>>
>> </xf:group>
>> <xf:trigger>
>> <xf:label>New</xf:label>
>> <xf:action ev:event="DOMActivate">
>> <xf:insert context="/items" origin="instance('template')/person"
>> nodeset="persName" position="after" at="count(persName)"/>
>> </xf:action>
>> </xf:trigger>
>> <xf:submit submission="s01">
>> <xf:label>View</xf:label>
>> </xf:submit>
>> </body>
>> </html>
>> <c709c5ba.png>
>>
>> _______________________________________________
>> Xsltforms-support mailing list
>> [email protected]
>> <mailto:[email protected]>
>> https://lists.sourceforge.net/lists/listinfo/xsltforms-support
>>
>> _______________________________________________
>> Xsltforms-support mailing list
>> [email protected]
>> <mailto:[email protected]>
>> https://lists.sourceforge.net/lists/listinfo/xsltforms-support
>> <https://lists.sourceforge.net/lists/listinfo/xsltforms-support>
_______________________________________________
Xsltforms-support mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/xsltforms-support