2008-10-06 4 views
23

Wie kann ich Folgendes in XSD darstellen.Wie definiere ich in XSD, dass ein Element nur CDATA enthält?

<price-update> 
    <![CDATA[ 
     arbitrary data goes here 
    ]]> 
</price-update> 
+0

Gibt es einen bestimmten Grund, dass Sie CDATA verwenden? Mit anderen Worten, könnte es möglich sein, diese Informationen in einem Element (oder mehreren Elementen) zu übergeben, die Sie zu Ihrer Schemadefinition hinzufügen könnten? –

+0

Der Consumer von meinem Dokument benötigt auch einige weitere Informationen, die in einer eigenen XML-Sprache definiert sind. Wir wollen keine separaten Dateien verwenden. Was ich tun möchte, ist ein anderes XML-Dokument in meinem huckepack. –

+1

Sie können nicht. http://StackOverflow.com/Questions/392770/Force-use-of-Cdata-in-xml-schema –

Antwort

26
<element name="price-update" type="string"></element> 

etwa so nah wie Sie bekommen können.

(Ich dachte, es ist am besten, die Antwort aus den Kommentaren und in eine tatsächliche Antwort zu verschieben).

21

Ein CDATA-Tag ist lediglich ein Mittel, um Daten als Textknoten zu umgehen. Daher können Sie nicht festlegen, dass Sie einen CDATA-Knoten benötigen.

Aus DOM Sicht sind die folgenden Dokumente identisch:

<doc>value</doc> 

und

<doc><![CDATA[value]]></doc> 
+1

SO wie würden Sie empfehlen, dass ich die XSD schreiben? Gefällt mir?

+1

Ich denke, type = "string" ist ungefähr so ​​nah wie möglich. –

+0

Sie könnten Ihren eigenen Typ mit einem Regex-Muster definieren, aber ich denke nicht, dass das funktionieren würde, da die XSD-Verarbeitung den CDATA-Teil nicht "sieht", sondern das Muster anwendet (nicht definitiv). –