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

Reply via email to