XML.orgXML.org
FOCUS AREAS |XML-DEV |XML.org DAILY NEWSLINK |REGISTRY |RESOURCES |ABOUT
OASIS Mailing List ArchivesView the OASIS mailing list archive below
or browse/search using MarkMail.

 


Help: OASIS Mailing Lists Help | MarkMail Help

[Date Prev] | [Thread Prev] | [Thread Next] | [Date Next] -- [Date Index] | [Thread Index]
xpath problem

Hello,

I have a xml file, simplified like this:

<a-file>

<x>
  <a id='a1'/>
  <a id='a2'/>
  <bb>
    <xx>
       <a id='55'/>
       <a id='66'/>
    </xx>
    <a id='a3'/>
    <a id='a4'/>
    <cc>
       <a-ref id-ref='a2'/>
       <a-ref id-ref='a4'/>
    </cc>
  </bb>
  <a id='a7'/>
  <a id='a8'/>
</x>

<x>
  ...
</x>

</a-file>

In this xml file, "a-ref/@id-ref" shoud reference a "a/@id" under its
"x" ascendant.

I wrote the xml schema grammar: the "a/@id" attributes are checked to
be unique within an "x" element, and the "a-ref/@id-ref" attributes
are checked to reference an existing "a/@id" attribute.

I have another constraint:  an "a-ref/@id-ref" may only reference a
"a/@id" node which appears before him, within its "x" ascendant.
The referenced "a" node should exist in its preceding-siblings, the
preceding-siblings of its parent, ... up to the "x" ascendant:

In other words, in the example, the first "a-ref" element should only
reference one of the following ids: a1, a2, a3, a4, but not 55 or 66,
a7 or a8.

In xslt-2, i can write a function which checks this rule, but i cannot
find a way to write it in a grammar.
I will need to use embedded shematron rules for other checks, but i
cannot find an xpath to check this rule.

I'm working with saxon9-ee edition.

Any idea on how to do that ?

Thanks for your replies
Vincent De Groote


[Date Prev] | [Thread Prev] | [Thread Next] | [Date Next] -- [Date Index] | [Thread Index]


News | XML in Industry | Calendar | XML Registry
Marketplace | Resources | MyXML.org | Sponsors | Privacy Statement

Copyright 1993-2007 XML.org. This site is hosted by OASIS