Nếu validator của bạn hỗ trợ XSD 1.1, bạn có thể sử dụng xs: khẳng định từ chối giá trị thuộc tính nhất định như thế này:
<?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"
attributeFormDefault="unqualified"
vc:minVersion="1.1">
<xs:element name="Transactions">
<xs:complexType>
<xs:sequence>
<xs:element name="Transaction" maxOccurs="unbounded">
<xs:complexType mixed="true">
<xs:attribute name="OrderID" type="xs:integer"/>
<xs:assert test="empty(index-of((8,9,10),@OrderID))"/>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>
nên này trả lời câu hỏi thứ hai của bạn.
Đối với câu hỏi đầu tiên của bạn, tôi không nghĩ rằng xác thực đơn đặt hàng là có thể. Tuy nhiên, bạn có thể sử dụng XSLT để sắp xếp tài liệu XML.
----- thêm câu trả lời cho câu hỏi đầu tiên -----
Cảm ơn bạn, Michael Kay. Vâng ... đây là câu trả lời cho câu hỏi đầu tiên của bạn.
<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name="Transactions">
<xs:complexType>
<xs:sequence>
<xs:element name="Transaction" maxOccurs="unbounded">
<xs:complexType mixed="true">
<xs:attribute name="OrderID" type="xs:integer"/>
<xs:assert test="empty(index-of((8,9,10),@OrderID))"/>
</xs:complexType>
</xs:element>
</xs:sequence>
<xs:assert test="every $x in Transaction satisfies
(empty($x/preceding-sibling::*) or
($x/@OrderID gt $x/preceding-sibling::*[1]/@OrderID))"/>
</xs:complexType>
</xs:element>
</xs:schema>
Nguồn
2014-09-23 05:36:06
Có, xác thực đơn đặt hàng là có thể. Ví dụ ' ' –
Cảm ơn Chong Lip Phang. Thành thật mà nói, tôi không hiểu câu trả lời của bạn đủ tốt để biết liệu nó có giải quyết được vấn đề của tôi hay không. Khi bạn viết có lẽ là 8,9,10 tham chiếu đến các giá trị cụ thể của OrderID? Tệp tôi đang làm việc có khoảng 30 nghìn giao dịch trong đó. Bất kỳ phương thức nào phù hợp với tôi sẽ cần phải hoạt động mà không cần tham chiếu đến các giá trị cụ thể cho OrderID. Bài kiểm tra
Selecter
Có, sẽ khiến xác thực thất bại nếu giá trị của OrderID là 8,9 hoặc 10. Nếu dữ liệu XML là rất nhiều, sau đó bạn có thể cần một quy tắc để phù hợp với một mẫu cụ thể. Việc xác thực sẽ vẫn vượt qua nếu bạn bỏ qua quy tắc xác nhận này và OrderID bỏ qua 8,9 hoặc 10. –