在XML/XSL文件中包含一个XML文件

所以目前我正在做一些XML-> XSLT-> (HTML5 / CSS3)工作。现在我有一个menu.xml文件,我想把它包含在XSL文件或XML页面中。我做了很多搜索,但是我找不到一个简单的答案。

那么,如何将XML文件包含在另一个XML文件或XSL文件中呢?

编辑:通过include,我的意思是从另一个文件引用/加载它,而不是复制和粘贴它,或者只是嵌入它。

I.下面是如何将XML文档或片段嵌入到XSLT样式表中并在转换过程中使用:
<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>

当这种转换应用于任何XML文档(在本例中未使用)时,就会产生想要的结果(只是复制XML):

<menu xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:my="my:my">
   <choice>A</choice>
   <choice>B</choice>
   <choice>C</choice>
</menu>

记住:任何XML可以嵌入到XSLT样式表中,前提是它被包装到一个命名空间的元素(命名空间而不是XSLT命名空间)中,而这个包装元素在全局级别(< xsl:stylesheet>(top )元素)。

II。访问位于单独的XML文件中的XML菜单文件

为了做到这一点,我们必须稍稍改变前面的例子:

<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>

如果菜单XML文件位于“menu.XML”文件(与XSLT样式表文件相同的目录中),则此转换将产生与上一个完全相同的结果:

<menu>
   <choice>A</choice>
   <choice>B</choice>
   <choice>C</choice>
</menu>

注意:在这两种情况下,我们都使用标准的XSLT功能document()

通常,一个定义一个全局变量,其值是调用document()函数的结果。然后通过转换过程中的XPath表达式访问该变量及其内容

相关文章

引言 NOKIA 有句著名的广告语:“科技以人为本”。任何技术都是为了满足人的生产生活需要而产生的。具体...
Writer:BYSocket(泥沙砖瓦浆木匠) 微博:BYSocket 豆瓣:BYSocket Reprint it anywhere u want. 文章...
Writer:BYSocket(泥沙砖瓦浆木匠) 微博:BYSocket 豆瓣:BYSocket Reprint it anywhere u want. 文章...
http://blog.jobbole.com/79252/ 引言 NOKIA 有句著名的广告语:“科技以人为本”。任何技术都是为了满...
(点击上方公众号,可快速关注) 公众号:smart_android 作者:耿广龙|loonggg 点击“阅读原文”,可查看...
一、xml与xslt 相信所有人对xml都不陌生,其被广泛的应用于数据数据传输、保存与序列化中,是一种极为强...