【发布时间】:2017-06-21 16:06:47
【问题描述】:
所以我的问题是我有一堆 xml 文件,超过 100 个,我想编写 xsl 来添加它们的默认值。我想知道是否有一种方法可以编写一个将所有这些 xml 转换为 xsl 格式的 xsl。目前我能想到的唯一另一种方法是用手,所以我想在开始这条漫长的道路之前我会问一下。
这是我的一个 XML 的摘录:
<value name="dt" field="dt"/>
<value name="qdd" field="qdd"/>
这是我当前的 XSL:
<xsl:template match="/../../..">
<xsl:copy>
<!-- copy whatever was already there -->
<xsl:apply-templates select="@*|*"/>
<xsl:if test="not(qdd)">
<qdd>0</qdd>
</xsl:if>
</xsl:copy>
</xsl:template>
所需的 XML 输出是这样的:
<value name="dt" field="dt"/>
<value name="qdd" field="qdd" default="0"/>
但是,知道需要保留订单,我是否需要手动将每个值添加到 xsl 中?我问是因为一些 xmls 有 20-30 个孩子。基本上我只是想删除xml中的默认值并将它们移动到xsl中。
【问题讨论】:
-
XSLT 是 XML,因此 XSLT 可以创建 XSLT 作为其结果,通常使用 w3.org/TR/xslt20/#element-namespace-alias 完成。您需要展示您心目中的 XML 和 XSLT 示例,以便我们判断这是否必要,您不能简单地使用参数。
-
对不起,我不明白你的问题。是否要将 test.xml 转换为 test.xsl,然后再将其用于其他转换? (确实可能)。或者您是否想要一个能够从 100 个 xml 文件中删除“默认值”的单一 xsl 工作表? (这取决于你的 100 个 xml 文件的结构)
-
@MartinHonnen 进行了更改。希望这能解释得更多。
-
@nCessity 我现在正在查看任一选项,我通常会删除默认值,但需要保留顺序,这可能会出现问题。希望我所做的编辑能更好地解释我的问题。
-
请同时添加您想要的输出xml,谢谢!