gpt4 book ai didi

xml - 如何使用 XSL 检查 XML 文件中是否存在属性

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

在运行时我可以有两种格式的 XML 文件:

  1. <root>
    <diagram>
    <graph color= "#ff00ff">
    <xaxis>1 2 3 12 312 3123 1231 23 </xaxis>
    <yaxis>1 2 3 12 312 3123 1231 23 </yaxis>
    </graph>
    </diagram>
    </root>
  2. <root>
    <diagram>
    <graph>
    <xaxis>1 2 3 12 312 3123 1231 23 </xaxis>
    <yaxis>1 2 3 12 312 3123 1231 23 </yaxis>
    </graph>
    </diagram>
    </root>

取决于颜色属性的存在我必须处理 xaxis 和 yaxis 的值。

我需要使用 XSL 执行此操作。谁能帮我提示我可以检查这些条件的片段。

我试过用

<xsl: when test="graph[1]/@color">
//some processing here using graph[1]/@color values
</xsl:when>

我有一个错误...

最佳答案

这是一种非常简单的条件处理方法,它使用 XSLT 模式匹配的全部功能和独有的“推送”样式,甚至无需使用条件指令,例如 <xsl:if><xsl:choose> :

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

<xsl:template match="/root/diagram[graph[1]/@color]">
Graph[1] has color
</xsl:template>

<xsl:template match="/root/diagram[not(graph[1]/@color)]">
Graph[1] has not color
</xsl:template>
</xsl:stylesheet>

当此转换应用于以下 XML 文档时:

<root>
<diagram>
<graph color= "#ff00ff">
<xaxis>1 2 3 12 312 3123 1231 23 </xaxis>
<yaxis>1 2 3 12 312 3123 1231 23 </yaxis>
</graph>
<graph>
<xaxis>101 102 103 1012 10312 103123 101231 1023 </xaxis>
<yaxis>101 102 103 1012 10312 103123 101231 1023 </yaxis>
</graph>
</diagram>
</root>

产生了想要的、正确的结果:

  Graph[1] has color

在此 XML 文档上应用相同的转换时:

<root>
<diagram>
<graph>
<xaxis>101 102 103 1012 10312 103123 101231 1023 </xaxis>
<yaxis>101 102 103 1012 10312 103123 101231 1023 </yaxis>
</graph>
<graph color= "#ff00ff">
<xaxis>1 2 3 12 312 3123 1231 23 </xaxis>
<yaxis>1 2 3 12 312 3123 1231 23 </yaxis>
</graph>
</diagram>
</root>

再次产生了想要的正确结果:

  Graph[1] has not color

可以自定义此解决方案,并将任何必要的代码放入第一个模板中,如有必要,放入第二个模板中。

关于xml - 如何使用 XSL 检查 XML 文件中是否存在属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4146648/

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