XML - DTD-Problemas con "|" en valores posibles

 
Vista:

DTD-Problemas con "|" en valores posibles

Publicado por lrd (1 intervención) el 02/04/2007 12:02:20
Hola a todos!

Estoy trabajando con DTD y necesito usar el caracter "|" en una lista de valores permitidos, estas son la lineas conflictivas:

<!ENTITY % bar "|">
<!ATTLIST ScreenObject anchor (TOP%bar;LEFT | BASELINE%bar;LEFT )>

Los valores permitidos que necesito son TOP|LEFT o BASELINE|LEFT, pero cuando substituye me da un error y es que toma los posibles valores como TOP,LEFT,BASELINE,LEFT y detecta que LEFT está repetido. He leido varios tutoriales y no sé si es que son demasiado básicos o no he sabido encontrar el adecuado para mi problemilla o que esto no está permitido simplemente y no lo expecifican....si alguien puede ayudarme, se lo agradecería mucho.

Muchas gracias por las molestias.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:DTD-Problemas con

Publicado por Mukuykak (59 intervenciones) el 01/05/2007 09:49:53
Saludos, lrd:

En los archivos DTD, cuando usamos un caracter tubo ( | ), podemos también agrupar valores mediante el uso de paréntesis. Tu DTD, lo puedes corregir del siguiente modo:

<!ATTLIST ScreenObject anchor ( (TOP | LEFT) | (BASELINE | LEFT ) )>

Así, ya no será necesario que uses ENTITY.

Buen día. =0)
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:DTD-Problemas con

Publicado por lrd (2 intervenciones) el 11/05/2007 13:09:27
Hola Mukuykak

En primer lugar gracias por contestarme, pero creo que no me he explicado bien:
lo que necesito como valores permitidos son las cadenas de caracteres "TOP|LEFT" o "TOP|RIGHT" ya que necesito que una propiedad de un elemento sea :
anchor="TOP|LEFT" o anchor="TOP|RIGHT" cuando escribo en el archivo .xml
No sé nisiquiera si es posible hacerlo...pero me estoy volviendo loca buscando la solución.

Muchisimas gracias por tu ayuda!!!
lrd
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:DTD-Problemas con

Publicado por Mukuykak (59 intervenciones) el 11/05/2007 23:47:31
Saludos, lrd:

Te había enviado un mail, pero vi que apenas comprendí que es lo que deseas.
Estaba cometiendo un error sobre el uso del caracter tubo. Lo siento.
Para lo que necesitas, el tubo causa errores. Lo mejor es usar un formato "top-left" y
"top-right". Yo tengo un programa editor xml / xsl que me valida los archivos, se llama
XTrans y te pongo un ejemplo que, por lo menos en este programa, al validar pide
que pongas los valores que se definieron.
Este es el xml con el dtd incluído:
-------------------------------------------------------------------------------------------------------------------------

<?xml version="1.0" encoding="iso_8859-1" standalone="yes"?>
<!DOCTYPE impreso[
<!ELEMENT impreso (pantalla)>
<!ELEMENT pantalla (imp)>
<!ELEMENT imp EMPTY >
<!ATTLIST imp anchor (top-left | top-right) #REQUIRED > ]>
<impreso>
<pantalla>
<imp anchor="" />
</pantalla>
</impreso>

-------------------------------------------------------------------------------------------------------------------------

Ya que lo copies, pegues y guardes, al abrirlo en el programa que uses para validar
te indicará el error: "Según el DTD, el archivo no es válido. Falta un valor en el atributo
'anchor' " (bueno, el texto del mensaje varía según el programa que uses =0P ). Si tú agregas otro valor distinto a los definidos, te indicará que no es válido.
Si abres el archivo con el explorador, no te avisará del error. Dejará el atributo "anchor"
como está escrito en el código: vacío.
Buen día =0)
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:DTD-Problemas con

Publicado por lrd (2 intervenciones) el 14/05/2007 09:02:47
Muchas gracias de nuevo.......
La solución que me propones sobre usar "-" en vez de "|", ya la tuve en cuenta y efectivamente funciona, pero no puedo usar ese caracter.
He estado pensando que podría utilizar un espacio en blanco "top left"|"top right", eso tambien me vendría bien y solucionaría mi problema, pero al declararlo en el archivo DTD me da problemas:
He probado varias formas:
<!ELEMENT imp EMPTY >
<!ATTLIST imp anchor (top left | top right) >

o

<!ELEMENT imp EMPTY >
<!ATTLIST imp anchor ("top left "| "top right") >

¿Podrías comentarme algo sobre ésto?
Muchisimas gracias de nuevo :)
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar