我正在使用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应该如下所示
输出。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.
请帮我解决这个问题。
提前谢谢你
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