I. Aquí es cómo cualquier documento XML o fragmento se pueden incrustar en una hoja de estilo XSLT y utilizados durante la transformación:
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:my="my:my">
<xsl:output omit-xml-declaration="yes" indent="yes"/>
<xsl:strip-space elements="*"/>
<my:menu>
<menu>
<choice>A</choice>
<choice>B</choice>
<choice>C</choice>
</menu>
</my:menu>
<xsl:template match="/">
<xsl:copy-of select="document('')/*/my:menu/*"/>
</xsl:template>
</xsl:stylesheet>
Cuando se aplica esta transformación en cualquier documento XML (no se utiliza en este ejemplo), el resultado deseado (sólo copiar el código XML) se produce:
<menu xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:my="my:my">
<choice>A</choice>
<choice>B</choice>
<choice>C</choice>
</menu>
Recuerde: Cualquier XM L se puede incrustar en una hoja de estilos XSLT, siempre que esté envuelto en un elemento de espacio de nombres (el espacio de nombres no el espacio de nombres XSLT) y este elemento de ajuste está en el nivel global (un elemento secundario del elemento <xsl:stylesheet>
(arriba)).
II. Acceso al menú de archivo XML que reside en un archivo XML independiente:
Para hacer esto tenemos que cambiar ligeramente el ejemplo anterior:
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output omit-xml-declaration="yes" indent="yes"/>
<xsl:strip-space elements="*"/>
<xsl:template match="/">
<xsl:copy-of select="document('menu.XML')/*"/>
</xsl:template>
</xsl:stylesheet>
Si el archivo de menú XML está en el archivo 'menu.XML'
(en el mismo directorio que el archivo de hoja de estilo XSLT, entonces esta transformación produce exactamente el mismo resultado que el anterior:
<menu>
<choice>A</choice>
<choice>B</choice>
<choice>C</choice>
</menu>
Do sin Te: En ambos casos estamos utilizando la función XSLT estándar document()
Por lo general, uno define una variable a nivel mundial, cuyo valor es el resultado de llamar a la función document()
. Luego se accede a esta variable y su contenido a través de expresiones XPath durante la transformación.
Al 'incluirlo', ¿quiere decir que quiere copiar/pegar los contenidos de menu.xml en otro archivo y alojarlo allí sin problemas, o quiere decir que quiere alguna forma de referencia remota del menú. xml del archivo host, ¿o quiere decir que quiere que su servidor web copie el contenido de menu.xml en el archivo host antes de servirlo, como si hubiera copiado/pegado el contenido usted mismo? – Phrogz
Ah, me refiero a como hacer referencia al archivo, sin incluirlo. Maldita sea mi programación hablar. Estoy demasiado acostumbrado a C. – Jookia
Buena pregunta, +1. Consulte mi respuesta para obtener una explicación y dos ejemplos completos de códigos que responden a sus preguntas. :) –