从中获取值

问题描述 投票:0回答:1

我想访问我存储在的版本信息

<xsl:stylesheet>
<xd:doc scope="stylesheet">
<xd:ul>
    <xd:li>
            <xd:i>Updates</xd:i>: <xd:ul>
                            <xd:li>20.11.2018, version: <xd:i>1.1.0</xd:i></xd:li>
                            <xd:li>08.03.2019, version: <xd:i>2.0.0</xd:i></xd:li>
                            <xd:li>11.03.2019, version: <xd:i>2.0.1</xd:i></xd:li>
            </xd:ul>
    </xd:li>
</xd:ul>
</xd:doc>

</xsl:stylesheet>

通常,@select的XPath被评估为当前正在转换的xml文件。但是如何将XPath引用到(主)XSL样式表?

另一种选择是使用fn:doc()。但我想将版本编写功能放在外部模块中,因此会有动态文件名,我不知道如何获取xsl文件名

我使用oXygen XML编辑器20.1来定义转换场景。

version filenames xslt-3.0 oxygenxml
1个回答
0
投票

@MartinHonnen谢谢。我更新了问题中的代码。正如您所看到的,我将版本存储在样式表的文档中。

document('') / doc('')是我所需要的。所以我实现了以下内容:

我将主样式表的文档节点放在放置在此样式表中的变量中:

<xsl:variable name="currentStylesheet" select="doc('')"/>   

然后在外部模块中引用它

 <xsl:variable as="xs:string" name="versionXSLT" select="$currentStylesheet//xd:li[xd:i = 'Updates']/xd:ul/xd:li[last()]/xd:i/string()"/> 

我还用它来获取样式表的名称:

<xsl:variable as="xs:string" name="currentStylesheetName" select="tokenize(document-uri($currentStylesheet), '/')[last()]"/>

有没有更好的解决方案?

© www.soinside.com 2019 - 2024. All rights reserved.