2010-01-18 15 views
8

A causa delle limitazioni di determinati sistemi, è necessario utilizzare XML formattati in modo un po 'scomodo. Quelli che dobbiamo trasformare in una forma conveniente.XSD: definire un elemento con qualsiasi nome

La domanda: come faccio a definire in uno schema XSD un elemento che ha le seguenti proprietà:

  • Non ha figli
  • Non ha alcun attributo
  • ha qualche nome (questo è ciò che è causando problemi)
+0

Non è possibile con XSD ..: - | –

+0

Non è possibile solo con xsd: il documento di istanza xml deve limitare il tipo di elementi. – Filburt

risposta

6

È possibile utilizzare l'elemento <xsd:any /> insieme al Xml Schema Instance type attribute.

Schema esempio

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

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

Conclusione

non si può far rispettare un tipo semplice nella sche XSD ma da solo.

+0

No, non posso. xsd: any consentirà una struttura arbitraria mentre voglio che gli elementi any-name non abbiano figli o attributi. – GSerg

+0

In questo caso sembra che i tuoi requisiti si escludano a vicenda. – Filburt

+0

Perché? Non lo sono, AFAIC. Qualsiasi elemento valore è idoneo, indipendentemente dal testo effettivo che ha luogo per "nodo", mentre qualsiasi non lo è. – GSerg

Problemi correlati