gpt4 book ai didi

xml - 在 XSLT 中调用函数

转载 作者:数据小太阳 更新时间:2023-10-29 03:01:18 25 4
gpt4 key购买 nike

我尝试运行我自己的样式表中下面链接的功能之一。但是我不知道怎么办。

这是一个 xsltransform.net demo .

下面是我要运行的函数:

func 1

func 2

最佳答案

假设像 Saxon 9 这样的 XSLT 2.0 处理器,您可以按如下方式使用 xsl:function:

<xsl:stylesheet
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
version="2.0"
xmlns:xs="http://www.w3.org/2001/XMLSchema"
xmlns:func="http://example.com/mf">

<xsl:output method="html" indent="yes"/>
<xsl:strip-space elements="*"/>

<xsl:template match="/">
<div>
<ul>
<xsl:apply-templates/>
</ul>
</div>
</xsl:template>

<xsl:template match="xs:element">
<li xPath="{func:generateXPath(.)}">
<xsl:value-of select="@name"/>
<xsl:if test="xs:*">
<ul>
<xsl:apply-templates/>
</ul>
</xsl:if>
</li>
</xsl:template>

<xsl:function name="func:generateXPath" as="xs:string" >
<xsl:param name="pNode" as="node()"/>
<xsl:value-of select="$pNode/ancestor-or-self::*/name()" separator="/"/>

</xsl:function>



</xsl:stylesheet>

对于某些 XSLT 1.0 处理器,例如 Saxon 6,我认为您可以使用 Xalan 或 XsltProc

<?xml version="1.0" encoding="UTF-8" ?>
<xsl:transform
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
version="1.0"
xmlns:func="http://exslt.org/functions"
xmlns:mf="http://example.com/mf"
xmlns:xs="http://www.w3.org/2001/XMLSchema"
exclude-result-prefixes="func mf xs">

<xsl:output method="html" indent="yes"/>
<xsl:strip-space elements="*"/>

<xsl:template match="/">
<div>
<ul>
<xsl:apply-templates/>
</ul>
</div>
</xsl:template>

<xsl:template match="xs:element">
<li xPath="{mf:getXpath()}">
<xsl:value-of select="@name"/>
<xsl:if test="xs:*">
<ul>
<xsl:apply-templates/>
</ul>
</xsl:if>
</li>
</xsl:template>

<func:function name="mf:getXpath">
<xsl:variable name="xpath">
<xsl:for-each select="ancestor-or-self::*">
<xsl:value-of select="name()"/>
<xsl:if test="not(position()=last())">
<xsl:value-of select="'/'"/>
</xsl:if>
</xsl:for-each>
</xsl:variable>
<func:result select="$xpath" />
</func:function>

</xsl:transform>

关于xml - 在 XSLT 中调用函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34794072/

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