
Dear Luis, Your description of the problem differs clearly from what you put in the Schematron schema. From your description it looks you want <sch:rule context="Root/Element"> <sch:assert test="count(.//Element4)=1">There should be only one element Element4 in Root/Element</sch:assert> </sch:rule> but from your schema it looks like you want <sch:rule context="Root/Element/Element2[@name='Attribute1']/Element3"> <sch:assert test="count(Element4)=1">There should be only one element Element4 in Root/Element/Element2[@name='Attribute1']/Element3</sch:assert> </sch:rule> Best Regards, George -- George Cristian Bina <oXygen/> XML Editor, Schema Editor and XSLT Editor/Debugger http://www.oxygenxml.com Luis Costa wrote:
Hi all,
My goal is to test if there is only one Element4 in each Root/Element.
I try to do this validation with schematron “a” but the result I have got is the wrong one because “a” is testing if there is only one Element4 in all xml “b” and that is not my intend.
Can anyone help me?
a)
<sch:schema xmlns:sch="http://purl.oclc.org/dsdl/schematron">
<sch:title>XXX</sch:title>
<sch:phase id="yyy">
<sch:active pattern="rrr" />
</sch:phase>
<sch:pattern id="rrr">
<sch:rule context="Root/Element">
<sch:assert test="Element2[@name='Attribute1']/Element3/Element4 = 1">Attribute1 shall be single Element4</sch:assert>
</sch:rule>
</sch:pattern>
</sch:schema>
b)
<Root>
<Element>
<Element2 name="Attribute1">
<Element3>
<Element4>Smitty</Element4>
</Element3>
</Element2>
<Element2 name="Attribute2">
<Element3>
<Element4>Cleveland Clinic</Element4>
<Element4>Parma Community</Element4>
</Element3>
</Element2>
</Element>
<Element>
<Element2 name="Attribute1">
<Element3>
<Element4>Dopplemeyer</Element4>
</Element3>
</Element2>
<Element2 name="Attribute2">
<Element3>
<Element4>Cleveland Clinic</Element4>
<Element4>Berea Community</Element4>
</Element3>
</Element2>
</Element>
</Root>
Thank you for your attention and best regards,
Luís Costa
Software Developer
luis.costa@alert.pt <mailto:luis.costa@alert.pt>
www.alert-online.pt <http://www.alert-online.pt/>
ALERT Life Sciences Computing, S.A.
Edifício Lake Towers – pisos 7, 8 e 9
Rua Daciano Baptista Marques, n.º 245
4400-617 Vila Nova de Gaia
Portugal
Tel.: +351 22 832 89 80
Fax.: +351 22 832 89 82
info@alert.pt <mailto:info@alert.pt>
This e-mail is privileged, confidential and contains private information. Any reading, retention, distribution or copying of this communication by any person other than its intended recipient is prohibited.
------------------------------------------------------------------------
_______________________________________________ oXygen-user mailing list oXygen-user@oxygenxml.com http://www.oxygenxml.com/mailman/listinfo/oxygen-user