2008-10-06 14 views
23

¿Cómo puedo representar lo siguiente en XSD.¿Cómo designo en XSD que un elemento solo contiene CDATA?

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

¿Hay algún motivo específico por el que esté utilizando CDATA? En otras palabras, ¿podría ser posible pasar esa información en un elemento (o elementos múltiples) que podría agregar a su definición de esquema? –

+0

El consumidor de mi documento también necesita más información que se define en su propio lenguaje XML. No queremos usar archivos separados. Lo que quiero hacer es utilizar otro XML doc dentro del mío. –

+1

No puedes. http://stackoverflow.com/questions/392770/force-use-of-cdata-in-xml-schema –

Respuesta

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

es lo más cercano que se puede conseguir.

(pensé que era mejor pasar la respuesta de los comentarios a una respuesta real).

21

Una etiqueta CDATA es simplemente un medio para escapar datos como un nodo de texto. Por lo tanto, no puede estipular que necesita un nodo CDATA.

Desde una perspectiva de DOM, los siguientes documentos son idénticos:

<doc>value</doc> 

y

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

Entonces, ¿cómo recomendarías que escriba e XSD? ¿Te gusta?

+1

Creo que type = "string" es lo más cercano que puede obtener. –

+0

Puede considerar la definición de su propio tipo utilizando un patrón de expresión regular, pero no creo que funcione, ya que el procesamiento XSD no "ve" que la parte CDATA realmente aplica el patrón (aunque no es definitivo). –

Cuestiones relacionadas