XSD 1.1 스키마를 사용하여 XML 문서의 유효성을 검사하는 데 최선을 다하고 있지만 방법이 없습니다. 나는이처럼 내 샘플을 단순화 보이는했습니다루핑 XSD 1.1 assert
<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:vc="http://www.w3.org/2007/XMLSchema-versioning" elementFormDefault="qualified">
<xs:element name="message1">
<xs:complexType>
<xs:sequence>
<xs:element type="xs:string" name="indexmessage"/>
<xs:element name="rows" maxOccurs="1">
<xs:complexType>
<xs:sequence>
<xs:element name="row" minOccurs="1" maxOccurs="unbounded">
<xs:complexType>
<xs:sequence>
<xs:element name="code">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:minLength value="1"/>
<xs:maxLength value="16"/>
</xs:restriction>
</xs:simpleType>
</xs:element>
<xs:element name="totalquantity">
<xs:simpleType>
<xs:restriction base="xs:decimal">
<xs:fractionDigits value="2"/>
</xs:restriction>
</xs:simpleType>
</xs:element>
<xs:element name="attachments" minOccurs="0" maxOccurs="1">
<xs:complexType>
<xs:sequence>
<xs:element name="attachment" minOccurs="1"
maxOccurs="unbounded">
<xs:complexType>
<xs:sequence>
<xs:element name="quantity">
<xs:simpleType>
<xs:restriction base="xs:decimal">
<xs:fractionDigits value="2"/>
</xs:restriction>
</xs:simpleType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
<xs:assert test="every $r in row/attachments/attachment satisfies eq(row/quantitytotal, sum($r/quantity)"/>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>
그래서 내가 XS에서 구현하고 싶은 : 주장은 quantitytotal이어야한다는 것입니다 "행 첨부 파일"의 양의 합과 같다. "모든"키워드를 사용하는 많은 샘플을 보았지만 결코 작동하지 않습니다. 여기에 또한 XSD 샘플입니다 :이 샘플
<?xml version="1.0" encoding="UTF-8"?>
<message1>
<indexmessage>02</indexmessage>
<rows>
<row>
<code>1789</code>
<totalquantity>3</totalquantity>
<attachments>
<attachment>
<quantity>2</quantity>
</attachment>
<attachment>
<quantity>1</quantity>
</attachment>
</attachments>
</row>
<row>
...
</row>
</rows>
</message1>
어설 진정한 원인 2 + 1 = 3이어야은 그리고 내가 XS를 구현하기 위해 노력하고있어 이유입니다 : 모든 행을 반복 주장한다.
많은 감사)
많은 감사 kjhughes;)는 매력처럼 작동합니다. – Fxbrandon