utiliza - xml schema y dtd
Entidades DTD frente a elementos de esquema XML (2)
El atributo fixed
en una definición de elemento no le dice a un analizador que haga una sustitución de texto. Simplemente significa que el valor del elemento siempre debe ser el mismo.
De hecho, creo que su XSLT está produciendo XML que no validará su esquema, ya que el valor del elemento <defs:red>
no es " rgb(255,0,0)
". Incluso si usó default
lugar de fixed
, esto no es una sustitución de texto. Simplemente significa que, si no se especifica ningún valor, cuando se consulta el valor en una instancia de DOM, encontrará el valor establecido en " rgb(255,0,0)
".
usando una DTD en documento hice lo siguiente:
file.xsl:
<!DOCTYPE xsl:stylesheet[
<!ENTITY red "rgb(255,0,0)">
]>
<xsl:stylesheet>
[...]
<xsl:attribute name="color">&red;</xsl:attribute>
[...]
</xsl:stylesheet>
Quería cambiar todo a XML-Schema. Así que lo intenté:
archivo.xsd:
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<xsd:element name="red" type="xs:token" fixed="rgb(255,0,0)" />
</xsd:schema>
file.xsl:
<xsl:stylesheet
xmlns:defs="http://www.w3.org/2001/XMLSchema-instance"
defs:noNamespaceSchemaLocation="file.xsd">
[...]
<xsl:attribute name="color"><defs:red/></xsl:attribute>
[...]
</xsl:stylesheet>
Ahora el análisis del archivo a través de Xalan Red no se traduce como en la versión de DTD. ¿Dónde está mi error? ¿Los archivos de Schema no se leen durante el proceso de análisis?
Aclamaciones
Ene
Usar esquemas para declarar sus reglas estructurales (en lugar de DTD) no le impide usar entidades.
La forma en que usa las referencias de entidad para sustituir el contenido declarado no cambia.
Las referencias de entidades no necesitan declararse solo dentro de los archivos DTD. Puede declararlos en línea en sus archivos XML.
<?xml version="1.0"?>
<!DOCTYPE foo [
<!ENTITY red "rgb(255,0,0)">
]>
<foo>
<bar color="&red;" />
</foo>
http://www.ibm.com/developerworks/xml/library/x-tipentref.html