Чтобы проверить документы XML, я хотел бы знать, возможно ли сделать ссылку на значение атрибута.
У меня есть состояния с числовым значением в атрибуте 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 было ссылкой на значение атрибута id из узла STATE.
Пример допустимого документа (два состояния, один переход к существующему идентификатору):
<sxml version="1.0">
<state id="1">
<nextstate>5</nextstate>
</state>
<state id="5" />
</scxml>
Пример неверного документа (два состояния, один переход к несуществующему идентификатору):
<sxml version="1.0">
<state id="1">
<nextstate>5</nextstate>
</state>
</scxml>
Знаете ли вы, если это возможно?
Спасибо за ответы:)