gpt4 book ai didi

java - Xalan 重定向 :write , 使用两个元素值之一根据空值创建新 .xml 文件的名称

转载 作者:行者123 更新时间:2023-11-30 05:12:28 25 4
gpt4 key购买 nike

所以我有以下代码:

<redirect:write select="concat('..\\folder\\,string(filename),'.xml')">

其中“文件名”是 xml 源中的标记。当文件名为空或空白时,就会出现我的问题。几个 xml 文件名标签就是这种情况。所以我想要实现的是一种检查方法。这就是我所做的:

<xsl-if test = "filename != ''">
<xsl:variable name = "tempName" select = "filename" />
</xsl-if>
<xsl-if test ="filename = ''">
<xsl:variable name = "tempName" select = "filenameB"/>
</xsl-if>

<redirect:write select="concat('..\\folder\\,string($tempName),'.xml')">

当我编译 Java 代码时,我似乎收到NPE,表示变量无法解析:tempName

最佳答案

这种转变:

<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:redirect="my:redirect"
>
<xsl:output omit-xml-declaration="yes" indent="yes"/>
<xsl:strip-space elements="*"/>

<xsl:template match="node()|@*">
<xsl:copy>
<xsl:apply-templates select="node()|@*"/>
</xsl:copy>
</xsl:template>

<xsl:template match="filename">
<xsl:variable name="tempName">
<xsl:choose>
<xsl:when test="text()">
<xsl:value-of select="."/>
</xsl:when>
<xsl:otherwise>filenameB</xsl:otherwise>
</xsl:choose>
</xsl:variable>

<redirect:write select="..\\folder\\{$tempName}.xml"/>
</xsl:template>
</xsl:stylesheet>

应用于此 XML 文档时:

<t xmlns:redirect="my:redirect">
<filename>Z</filename>
<filename/>
</t>

产生想要的正确结果:

   <t xmlns:redirect="my:redirect">
<redirect:write select="..\\folder\\Z.xml" />
<redirect:write select="..\\folder\\filenameB.xml" />
</t>

请注意:每当根据条件确定变量的值时,都会使用 <xsl:choose> 来实现该条件。在变量体内。

关于java - Xalan 重定向 :write , 使用两个元素值之一根据空值创建新 .xml 文件的名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2916412/

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