gpt4 book ai didi

xml - 任何尚未处理的节点的 XSLT 模板?

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

是否可以匹配“任何尚未匹配/处理的节点”?最好不要将我的样式表变成一个巨大的 for-each/Choose 语句,因为当前的顺序很重要。

该项目仍在开发中,并且已经在实时环境中使用,所以简单地说,代码处于快速变化的状态以响应我们正在获取的实时数据。我正在生成一个 PDF 文档来自 XML 的 FO,其中可能包含我还不知道的节点,并且想向我的 XSL-FO 转换添加“故障转移”指令,将所有未说明的节点放在文档的开头鲜红色,以加快发现速度。

我不能只是忽略意外节点,因为数据需要被处理。我越快找到“孤立”数据,我就能越快妥善处理它并将其排出体外。

我试过玩弄 <xsl:template match="*">...</xsl:template>和各种 priority=""设置,当然它适用于每个节点。

例如,我可能将它放在一个部分中,因为不能保证这些 XML block 以正确的输出顺序出现。 (代码块格式对我不起作用 - 四个空格缩进没有结果,抱歉 :(

<xsl:template match="AccountSummary">
<fo:block margin-left="2" space-before="1" space-after="1" text-align="center">
<xsl:apply-templates select="Label"/>
</fo:block>
<xsl:apply-templates select="AccountInfo"/>
<xsl:apply-templates select="AccountProfile"/>
<xsl:apply-templates select="ChangeInValueOfAccounts"/>
<!-- ... more goes here -->
</xsl:template>

我想做这样的事

<xsl:template match="AccountSummary">
<fo:block margin-left="2" space-before="1" space-after="1" text-align="center">
<xsl:apply-templates select="Label"/>
</fo:block>
<xsl:apply-templates select="AccountInfo"/>
<xsl:apply-templates select="AccountProfile"/>
<xsl:apply-templates select="ChangeInValueOfAccounts"/>
<!-- ... more goes here -->
<xsl:for-each select="not otherwise matched">
<!-- call zomgRED template -->
</xsl:for-each>
</xsl:template>

理想情况下,我宁愿 zomgRED应该在顶部,但在底部也可以。或者用文本标记标记。任何可以吐出最终文档中的文本而不是静静地吃掉它的东西。

最佳答案

您可以通过以下方式了解您正在寻找的内容。虽然没有将未处理的节点推到顶部:

1) 在您的样式表中进行身份转换:

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

2) 请务必调用 <xsl:apply-templates select="*"/>来自所有其他更具体的模板,让解析器运行

想法是您的特定模板处理预期的 XSL-FO 转换,而身份转换只是将其他所有内容转储到结果树中。递归调用将确保您实际接触所有节点(这是让它们“记录在案”的唯一方法)并且身份转换将匹配您没有捕获的节点。

#2 建议实际上会妨碍您的 XSL-FO 逻辑,因此可能实际上不可行,如果没有示例输入和您当前的 XSL-FO 转换,我无法判断。也许将其添加到问题中?

关于xml - 任何尚未处理的节点的 XSLT 模板?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10454114/

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