2010-01-18 24 views
8

Debido a las limitaciones de ciertos sistemas, necesitamos usar XML que tienen un formato un poco inconveniente. Aquellos que necesitamos transformar en una forma conveniente.XSD: Definir un elemento con cualquier nombre

La pregunta: ¿Cómo se define en un esquema XSD un elemento que tiene las siguientes propiedades:

  • no tiene hijos
  • Contiene ningún atributos
  • tenga cualquier nombre (eso es lo que hay problemas que causan)
+0

No es posible con XSD ..: - | –

+0

No es posible con xsd solo: el documento de instancia xml necesita restringir el tipo de elementos. – Filburt

Respuesta

6

Usted puede utilizar el elemento <xsd:any /> junto con el Xml Schema Instance type attribute.

esquema ejemplo

<?xml version="1.0" encoding="utf-8" ?> 
<xsd:schema attributeFormDefault="qualified" elementFormDefault="qualified" xmlns:xsd="http://www.w3.org/2001/XMLSchema"> 
    <xsd:element name="root"> 
     <xsd:complexType> 
      <xsd:sequence maxOccurs="unbounded"> 
       <xsd:any processContents="strict" namespace="##local"></xsd:any> 
      </xsd:sequence> 
     </xsd:complexType> 
    </xsd:element> 
    <xsd:simpleType name="st"> 
     <xsd:restriction base="xsd:string" /> 
    </xsd:simpleType> 
</xsd:schema> 

Prueba XML

<?xml version="1.0" encoding="utf-8"?> 
<root xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> 
    <!-- valid --> 
    <one xsi:type="st">value one</one> 
    <emptyone xsi:type="st"/> 

    <!-- invalid --> 
    <two name="myname" xsi:type="st">value two</two> 

    <!-- invalid --> 
    <three xsi:type="st"> 
     <four xsi:type="st">value four</four> 
    </three> 
</root> 

Conclusión

no se puede hacer cumplir un tipo simple en la SChE xsd ma solo.

+0

No, no puedo. xsd: any permitirá la estructura arbitraria, mientras que yo quiero que los elementos con nombre no tengan hijos o atributos. – GSerg

+0

En ese caso, parece que sus requisitos son mutuamente excluyentes. – Filburt

+0

¿Por qué? Ellos no son, AFAIC. Cualquier elemento de valor es elegible, independientemente del texto real que tenga lugar de "nodo", mientras que cualquier no lo es. – GSerg

Cuestiones relacionadas