Given this XML file:
<users blessed="phrogz alians">
<user name="phrogz" id="42" />
<user name="lachtok" id="3" />
<user name="vielee" id="5" />
<user name="alians" id="17" />
</users>
...is it possible to create an XSD key
/keyref
style validation that ensures that each value in the the blessed
list matches against an existing user/@name
?
If this is not possible with XSD, is it possible with RelaxNG?
No, it's not possible with XSD 1.0. It's straightforward in XSD 1.1, of course, using assertions:
Uniqueness (if defined at the level of the users element):
<xsl:assert test="count(@blessed) = count(distinct-values(@blessed))"/>
Referential integrity (if defined at the level of the users element):
<xsl:assert test="every $t in data(@blessed) satisfies $t = user/@name"/>
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With