是否可以匹配“尚未匹配/处理的任何节点”?最好不要让我的样式表变成一个巨大的 for-each/Choose 语句,因为当前的顺序很关键。
该项目仍在开发中,并且已经在实时环境中使用,所以简单地说,代码处于快速变化的状态,以响应我们输入的实时数据。我正在通过 FO 从 XML 生成 PDF 文档其中可能有我还不知道的节点,并且想在我的 XSL-FO 转换中添加“故障转移”指令,将文档开头的所有下落不明的节点以鲜红色显示,以加快发现速度。
我不能只忽略惊喜节点,因为需要处理数据。我越快找到“孤儿”数据,我就能越快得到妥善处理并将其排除在外。
我尝试过使用<xsl:template match="*">...</xsl:template>
各种 priority="" 设置,但它当然适用于每个节点。
例如,我可能在一个部分中有这个,因为这些 XML 块不能保证以正确的输出顺序出现。(代码块格式对我不起作用 - 四个空格缩进没有任何结果,抱歉 :(
<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
s 在顶部,但在底部也可以。或用文本标记标记。任何可以在最终文档中吐出文本而不是默默吃掉它的东西。