Chỉ cần cố gắng trong VS 2013 và VS 2015. Họ đã làm xác thực khóa/khóa lại ngay bây giờ. Nó cho thấy cảnh báo ở cấp độ cha mẹ mặc dù.
Nhưng như @antiduh cho biết, họ vẫn không kiểm tra tệp xsd. Vì vậy, bạn thực sự cần phải đảm bảo khóa/khóa trong xsd là chính xác.
Mất nhiều giờ để tìm ra một mẫu đơn giản. Ngay cả sample on MSDN cũng không hoạt động. Tôi phải sửa đổi nó một chút.
Trước tiên, hãy đảm bảo bạn biết how to let Visual Studio validate an xml against an xsd of your choice.
Sau đó, sử dụng mẫu xsd và xml sau để xác thực khóa/khóa. Lưu ý rằng cảnh báo là đóng phần tử gốc, thay vì trên phần tử vi phạm quy tắc khóa/quy tắc.
Các tập tin XSD trông như thế này:
<?xml version="1.0" encoding="utf-8"?>
<xs:schema
xmlns:xs="http://www.w3.org/2001/XMLSchema"
targetNamespace="namespace1"
xmlns:r="namespace1"
elementFormDefault="qualified">
<xs:element name="root">
<xs:complexType>
<xs:sequence>
<xs:element name="A" type="r:A" maxOccurs="unbounded"/>
<xs:element name="B" type="r:B"/>
</xs:sequence>
</xs:complexType>
<xs:keyref name="dummy" refer="r:pNumKey">
<xs:selector xpath="r:A/r:part"/>
<xs:field xpath="@ref-number"/>
</xs:keyref>
<xs:key name="pNumKey">
<xs:selector xpath="r:B/r:part"/>
<xs:field xpath="@key-number"/>
</xs:key>
</xs:element>
<xs:complexType name="A">
<xs:sequence>
<xs:element name="part" maxOccurs="unbounded">
<xs:complexType>
<xs:simpleContent>
<xs:extension base="xs:string">
<xs:attribute name="ref-number" type="xs:integer"/>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
<xs:complexType name="B">
<xs:sequence>
<xs:element name="part" maxOccurs="unbounded">
<xs:complexType>
<xs:simpleContent>
<xs:extension base="xs:string">
<xs:attribute name="key-number" type="xs:integer"/>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:schema>
Và file xml trông như thế này:
<?xml version="1.0" encoding="utf-8" ?>
<root xmlns="namespace1">
<A>
<!-- if the ref-number is equal to one of the key-number, the validation will pass -->
<part ref-number="1"/>
</A>
<A>
<!-- if the ref-number is not equal to one of the key-number, the validation will give error -->
<part ref-number="5"/>
</A>
<B>
<part key-number="1"/>
<part key-number="2"/>
<part key-number="3"/>
</B>
</root><!--you will see warnings here-->
Nguồn
2016-09-08 21:20:51
thể trùng lặp của [bạn có thể xác nhận xsd chống xml trong vs 2010?] (Http: //stackoverflow.com/questions/8988593/can-you-validate-xsd-against-xml-in-vs-2010) – DaveShaw
Bạn đã bao giờ tìm thấy câu trả lời cho điều này chưa? Dường như để hỗ trợ điều này với XSD XSD sau khi tất cả ... –
Không có câu trả lời nào được nêu ra, tôi nghĩ rằng càng nhiều người upvote này, không có câu trả lời. Không may. –