Appena provato in VS 2013 e VS 2015. Hanno fatto convalidare key/refkey ora. Tuttavia mostrò avvertimenti a livello di genitore.
Ma come @antiduh ha detto, non controllano ancora il file xsd. Quindi hai davvero bisogno di assicurarti che la chiave/refkey in xsd sia corretta.
Ci sono volute le mie ore per capire un semplice esempio. Anche lo sample on MSDN non funziona. Ho dovuto modificarlo un po '.
Innanzitutto, assicurarsi di conoscere how to let Visual Studio validate an xml against an xsd of your choice.
Quindi utilizzare il seguente esempio xsd e xml per convalida chiave/tasto. Ricorda che l'avviso è sulla chiusura dell'elemento root, invece che sull'elemento che viola la regola key/ref.
file XSD è simile al seguente:
<?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>
E il file XML è simile al seguente:
<?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-->
fonte
2016-09-08 21:20:51
possibile duplicato di [si può convalidare xsd contro xml in VS 2010?] (Http: //stackoverflow.com/questions/8988593/can-you-validate-xsd-against-xml-in-vs-2010) – DaveShaw
Hai mai trovato una risposta a questo? Dopotutto sembra supportare XSD XSD dopo tutto ... –
Nessuna risposta ancora, sto pensando che mentre sempre più persone lo confermano, non c'è risposta. Purtroppo. –