2010-01-18 11 views
8

Aufgrund der Einschränkungen bestimmter Systeme müssen wir XMLs verwenden, die etwas unpassend formatiert sind. Diejenigen, die wir in eine bequeme Form verwandeln müssen.XSD: Definieren Sie ein Element mit einem beliebigen Namen

Die Frage: Wie kann ich in einem XSD-Schema definieren ein Element, das die folgenden Eigenschaften hat:

  • hat keine Kinder
  • hat keine Attribute
  • einen beliebigen Namen Hat (das ist, was Probleme verursacht)
+0

Dies ist nicht möglich mit XSD ..: - | –

+0

Dies ist mit xsd allein nicht möglich - das XML-Instanzdokument muss den Elementtyp einschränken. – Filburt

Antwort

6

Sie verwenden, um die <xsd:any /> Element zusammen mit dem Xml Schema Instance type attribute.

Schema

<?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> 

Test-XML-Instanz

<?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> 

Fazit

Sie können nicht im XSD-sche ein einfacher Typ erzwingen ma allein.

+0

Nein, ich kann nicht. xsd: any wird beliebige Struktur erlauben, während ich das Element any-Namen wollen (n) keine Kinder oder Attribute haben. – GSerg

+0

In diesem Fall scheint es, dass sich Ihre Anforderungen gegenseitig ausschließen. – Filburt

+0

Warum? Sie sind nicht, AFAIC. Jede Wert Element ist geeignet, unabhängig tatsächlichen Text, der Ort der „Knoten“ erfolgt, während jede nicht. – GSerg

Verwandte Themen