我正在使用xslt 1.0,我想将一个xslt文件导入另一个xslt文件。
下面是示例:
A.XML
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
version="1.0">
<xsl:template match="/">
<header>
<UserId>
<xsl:value-of select="'user1'" />
</UserId>
<UserPaassword>
<xsl:value-of select="'1234'" />
</UserPaassword>
</header>
</xsl:template>
</xsl:stylesheet>
B.XML
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
version="1.0">
<xsl:template match="/">
<userData>
<xsl:import href="A.xsl"/>
<body>
<UserAddress>
<xsl:value-of select="'India'" />
</UserAddress>
<UserPhoneNumber>
<xsl:value-of select="'123456789'" />
</UserPhoneNumber>
</body>
</userData>
</xsl:template>
</xsl:stylesheet>
并且最终输出xsl应该如下所示
output.xsl
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
version="1.0">
<xsl:template match="/">
<userData>
<header>
<UserId>
<xsl:value-of select="'user1'" />
</UserId>
<UserPaassword>
<xsl:value-of select="'1234'" />
</UserPaassword>
</header>
<body>
<UserAddress>
<xsl:value-of select="'India'" />
</UserAddress>
<UserPhoneNumber>
<xsl:value-of select="'123456789'" />
</UserPhoneNumber>
</body>
</userData>
</xsl:template>
I tried with the import statement but xsl:import is not allowed into xsl:template.
请帮助我。
提前非常感谢你。
答案 0 :(得分:0)
您已经回答了自己的问题。 xsl:import
内不允许xsl:template
,因此您当前正在尝试的内容无效。当你使用xsl:import
时,XSLT处理器将它替换为href属性中命名的样式表的内容,所以在你的情况下,你最终会得到像这样的XSLT ......
<xsl:template match="/">
<userData>
<xsl:template match="/">
<header>
值得指出的是,XSLT处理器实际上不会在此处更改物理文件b.xml
,也不会创建新的物理文件output.xsl
。此导入仅在处理运行时应用。新的XSLT只存在于内存中。
你还没有确切地说出你想要实现的目标。但听起来你需要在这里阅读xsl:apply-imports
。导入的模板的优先级低于主模板中的模板,因此您可以使用xsl:apply-imports
在导入的模板中应用此类模板。
作为初学者,请将您的B.xml
文件更改为
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
<xsl:import href="A.xml"/>
<xsl:output method="xml" indent="yes"/>
<xsl:template match="/">
<userData>
<xsl:apply-imports />
<body>
<UserAddress>
<xsl:value-of select="'India'" />
</UserAddress>
<UserPhoneNumber>
<xsl:value-of select="'123456789'" />
</UserPhoneNumber>
</body>
</userData>
</xsl:template>
</xsl:stylesheet>
因此,当示例中使用xsl:apply-imports
时,它实际上会匹配导入的a.xml
文件中的主模板。
有关详细信息,请参阅http://www.w3.org/TR/xslt#section-Combining-Stylesheets。