¿Cómo se especifica una lista de elementos secundarios necesarios xml que no necesitas ser en secuencia?
-
29-09-2019 - |
Pregunta
Los siguientes valida XML con el documento xsd suministrado. Sin embargo cuando inicio la eliminación de elementos como desde el XML que valida TODAVÍA!?
¿Cómo escribo un XSD que las fuerzas de la inclusión de elementos?
<?xml version="1.0" encoding="UTF-8"?>
<Video>
<Title>
</Title>
<Description>
</Description>
<Contributor>
</Contributor>
<Subject>
</Subject>
</Video>
A continuación, tengo el xsd:
<?xml version="1.0" encoding="utf-8"?>
<xs:schema id="UploadXSD"
targetNamespace="http://tempuri.org/UploadXSD.xsd"
elementFormDefault="qualified"
xmlns="http://tempuri.org/UploadXSD.xsd"
xmlns:mstns="http://tempuri.org/UploadXSD.xsd"
xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name="Video">
<xs:complexType>
<xs:sequence>
<xs:element name="Title" minOccurs="1" type="xs:string"></xs:element>
<xs:element name="Description" minOccurs="1" type="xs:string"></xs:element>
<xs:element name="Contributor" minOccurs="1" type="xs:string"></xs:element>
<xs:element name="Subject" minOccurs="1" type="xs:string"></xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>
Solución
Su targetNamespace en el xsd debe coincidir con el espacio de nombres del xml que está tratando de validar, es decir.
<Video xmlns="http://tempuri.org/UploadXSD.xsd">
<Title>
</Title>
<Description>
</Description>
<Contributor>
</Contributor>
<Subject>
</Subject>
</Video>
Otros consejos
Si utiliza xs:all
en contraposición a xs:sequence
, los elementos pueden aparecer en cualquier orden. Hay algunas restricciones adicionales - (. No estoy seguro de si tiene la intención de que el uso, el esquema permitiría que actualmente), por ejemplo, los elementos no se pueden especificar varias veces usando all
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow