XML ドキュメントを検証するために、属性値を参照できるかどうかを知りたいです。
ID属性に数値を持つ州があります。これらの状態では、別の状態に移行するために息子がここにいます。この息子に指定されたIDが、ある状態で存在するIDであることを確認するために、ここで参考にしたいと思います。
主な目標は、すべての ID がドキュメントで指定されている場合にのみ、ドキュメントを検証することです。
私のXSDドキュメントがあります:
<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified"
xmlns:jxb="http://java.sun.com/xml/ns/jaxb" jxb:version="2.0">
<xs:element name="scxml">
<xs:complexType>
<xs:sequence>
<xs:element maxOccurs="unbounded" name="state">
<xs:complexType>
<xs:choice maxOccurs="1">
<xs:element name="nextstate" type="xs:nonNegativeInteger"/>
</xs:sequence>
</xs:choice>
<xs:attribute name="id" use="required" type="xs:nonNegativeInteger"/>
</xs:complexType>
</xs:element>
</xs:sequence>
<xs:attribute name="version" type="xs:string" use="optional"/>
</xs:complexType>
<xs:unique name="uniqueStateID">
<xs:selector xpath="./state"/>
<xs:field xpath="@id"/>
</xs:unique>
</xs:element>
</xs:schema>
ですから、NEXTSTATE ノードの値は、ノード STATE の id 属性の値への参照であってほしいと思います。
有効なドキュメントの例 (2 つの状態、既存の ID への 1 つの遷移):
<sxml version="1.0">
<state id="1">
<nextstate>5</nextstate>
</state>
<state id="5" />
</scxml>
無効なドキュメントの例 (2 つの状態、存在しない ID への遷移) :
<sxml version="1.0">
<state id="1">
<nextstate>5</nextstate>
</state>
</scxml>
それが可能かどうか知っていますか?
答えてくれてありがとう:)