gpt4 book ai didi

xslt - 获取所有包含的样式表

转载 作者:行者123 更新时间:2023-12-04 05:26:44 26 4
gpt4 key购买 nike

是否可以在 xslt 过程中获得所有包含的样式表的列表?

我问是因为整个包含/导入过程是在执行之前完成的,我想知道我是否可以访问这些信息?

最佳答案

此样式表 (Main.xslt)

<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="xml" version="1.0" encoding="UTF-8" indent="yes"/>

<xsl:include href="Sub1.xslt"/>
<xsl:include href="Sub2.xslt"/>

<xsl:template match="/">
<root>
<xsl:value-of select="document('Main.xslt')/xsl:stylesheet/xsl:include/@href"/>
</root>
</xsl:template>
</xsl:stylesheet>

及其包含的样式表 Sub1.xslt 和 Sub2.xslt
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="xml" version="1.0" encoding="UTF-8" indent="yes"/>

<xsl:template name="Template1">
<xsl:text>Template 1</xsl:text>
</xsl:template>
</xsl:stylesheet>

<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="xml" version="1.0" encoding="UTF-8" indent="yes"/>

<xsl:template name="Template2">
<xsl:text>Template 2</xsl:text>
</xsl:template>
</xsl:stylesheet>

会产生
<?xml version="1.0" encoding="UTF-8"?>
<root>Sub1.xslt Sub2.xslt</root>

可能有不同的方法;我不确定。此外,我也不是 100% 确定在调用 document('Main.xslt') 时基本 URI 是如何定义的。 ,这意味着当您希望它相对于 XSLT 文件进行解析时,可以相对于 XML 实例解析文件名。无论如何,我使用驻留在与 Main.xslt 不同的目录中的 XML 实例运行测试,它仍然有效。

附录:

为了递归地遍历树,您可以执行以下操作(XSLT1):


   <xsl:include href="Sub1.xslt"/>
<xsl:include href="Sub2.xslt"/>

<xsl:template match="/">
<root>
<xsl:call-template name="WalkIncludes">
<xsl:with-param name="FileName" select="'Main.xslt'"/>
</xsl:call-template>
</root>
</xsl:template>

<xsl:template name="WalkIncludes">
<xsl:param name="FileName"/>

<xsl:for-each select="document($FileName)/xsl:stylesheet/xsl:include/@href">
<xsl:value-of select="."/>

<xsl:call-template name="WalkIncludes">
<xsl:with-param name="FileName" select="."/>
</xsl:call-template>
</xsl:for-each>
</xsl:template>
</xsl:stylesheet>

关于xslt - 获取所有包含的样式表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13126707/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com