gpt4 book ai didi

xml - XSL 1.0 使用当前值检查变量字符串

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

我想用值变量(数组)检查当前值。不知何故,我需要在 if 测试中使用另一个循环。

我的目标是将 sourceXml 中的语言映射到 testLanguages.xml

源代码

<?xml version="1.0" encoding="utf-8"?>
<a>
<b lang="en"></b>
<b lang="de"></b>
<b lang="it"></b>
<b lang="jp"></b>
</a>

测试语言.xml

<?xml version="1.0" encoding="utf-8"?>
<languages>
<lang Key="de" Id="1031" />
<lang Key="en" Id="1033" />
</languages>

我当前的 XSL 不工作:

<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">

<xsl:output method="xml" indent="yes" omit-xml-declaration="no"/>
<xsl:strip-space elements="*" />

<xsl:variable name="language" select="document('testLanguages.xml')/lang" />

<xsl:template match="/">

<xsl:template match="a">

<xsl:for-each select="./b">
<xsl:if test=".b[@lang=$language@Key]">
Only DE and EN should be here
</xsl:if>
</xsl:for-each>

</xsl:template>

</xsl:stylesheet>

最佳答案

解决方案 XSLT 1.0 [没有任何 <xsl:key> -用法]

<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">

<xsl:output method="xml" indent="yes" omit-xml-declaration="no"/>
<xsl:strip-space elements="*" />

<xsl:variable name="language" select="document('testLanguages.xml')//lang" />

<xsl:template match="a">
<xsl:copy>
<xsl:for-each select="b[@lang = $language/@Key]">
<xsl:copy>
<xsl:copy-of select="@* | $language[@Key = current()/@lang]/@*"/>
</xsl:copy>
</xsl:for-each>
</xsl:copy>
</xsl:template>

</xsl:stylesheet>

输出

<?xml version="1.0" encoding="UTF-8"?>
<a>
<b lang="en" Key="en" Id="1033"/>
<b lang="de" Key="de" Id="1031"/>
</a>

总结

您的某些模式与错误的 child 匹配。输出可能与您的实际预期输出不同。

关于xml - XSL 1.0 使用当前值检查变量字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39959188/

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