Vra

Ek probeer On-geordende lys van veranderlikes in var1 maak plaasvind twee keer en VAR2 plaasvind oneindige tye (gebruik geval in my projek is anders). Die element nie toelaat dat my om maxOccurs gebruik.

Is daar enige werk om vir wat ek probeer om te doen?

<?xml version="1.0" encoding="ISO-8859-1"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
  <xs:element name="testcomment">
    <xs:complexType>
      <xs:all>
        <xs:element name="var1" type="xs:string" maxOccurs="2" />
        <xs:element name="var2" type="xs:integer" maxOccurs="unbounded" />
      </xs:all>
    </xs:complexType>
  </xs:element>
</xs:schema>
Was dit nuttig?

Oplossing

Wat jy probeer om te doen klink soos die tipe van 'n element in jou lys kan dubbelsinnig wees sonder die lees van lig, in welke geval daar is geen werk rondom in XSD as gevolg van die klasse van tale kan dit beskryf.

Kan jy plaas 'n relevante deel van jou XSD?


Update: Nee, jy kan dit nie doen met XSD. Die reëls oor wat jy in 'n <xs:all> element kan sit gelys byvoorbeeld hier . Hierdie beperking het 'n naam - die Úpa, of Unieke Particle Erkenning beperking. Dit gaan alles te doen met dubbelsinnigheid en die Microsoft webwerf het 'n goeie verduideliking van waarom is bestaan ?? hier .

Jy kan óf verander jou dokument uitleg aan die behoefte aan hierdie soort van verklaring, of kyk na 'n meer ekspressiewe skedule taal soos verwyder RelaxNG .

Ander wenke

Ek het afgekom op dieselfde probleem en daar is 'n oplossing! Kyk gerus na hierdie antwoord:

https://stackoverflow.com/a/3827606/637142

<xs:element name="A">
  <xs:complexType>
    <xs:choice maxOccurs="unbounded">
      <xs:element ref="B"/>
      <xs:element ref="C"/>
    </xs:choice>
  </xs:complexType>
</xs:element>

maklik, eenvoudig use<xs:choice maxOccurs="unbounded"> in plaas van <xs:all>. Dit sal die effek wat jy op soek is na te gee.

Gelisensieer onder: CC-BY-SA met toeskrywing
Nie verbonde aan StackOverflow
scroll top