2010-02-16 27 views
8

Estoy creando un DTD para un documento xml. Tengo un Enumerated attribute para un elemento xml. Mi pregunta es: ¿Puede el atributo Tipo tener espacios?¿Los atributos XML pueden tener espacios?

por ejemplo:

<!ELEMENT Link (#PCDATA)> 
    <!ATTLIST Link Type (Amendment|Reference|Superseded|Modified| 
    Corrigendum|Corresponds|Endorsement|Equivalent|Identical|Modified| 
    Not Equivalent|Note taken of|Related|Similar) "Reference"> 

Así que lo que me gustaría es:

<Link Type="Not Equivalent" \> 

Pero eso parece vomitar.

¿Hay algún vudú mágico que deba hacer para los espacios? ¿O es solo una mala suerte?

miré en un fewspots pero no podía ver ninguna referencia

Gracias!

actualización

Lo sentimos - cuando digo vomitar, me refiero a que cuando trato de validar el documento (por ejemplo abrirlo en un navegador web) me sale un mensaje de error: carácter no válido en la enumeración ATTLIST. Error al procesar el recurso 'file: /// C: /myxmldocument.xml'. ...

+1

Si está en el proceso de crear la DTD por su cuenta, le sugiero seriamente que reconsidere y escriba un Esquema XML en su lugar. Es muchísimo más flexible y, al mismo tiempo, es más específico sobre lo que está permitido y lo que no. – skaffman

Respuesta

10

La respuesta corta es no. Los atributos Xml son tokens de nombre y los tokens de nombre no pueden contener espacios. Las especificaciones pertinentes están vinculados:

Attributes

Attribute Types (see NotationType)

Names (See 4a - NameChar)

El carácter no válido es el espacio. Puedes usar '.' o '-' como separador si lo desea.

+5

XML en sí mismo admite espacios en atributos muy bien; es la especificación DTD que no lo permite en enumeraciones 'ATTLIST'. – skaffman

+2

Solo para aclarar: espacios en el atributo Los nombres siempre son inválidos. Los espacios en los valores de los atributos son correctos, PERO una declaración de atributo enumerada requiere que todos los tokens en la enumeración sean solo secuencias de Caracteres de nombre, por lo que no hay espacios. Podría usar 'Not_Equivalent (o incluso' -Equivalent 'está bien, aunque este no es un Nombre válido). – Max

Cuestiones relacionadas