gpt4 book ai didi

xml - 对标签参数进行 xslt 测试

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

我想在 xslt 中创建一个模板,其中包含我正在匹配的标签参数的条件。

例如:如果我有标签 <par class="class1"><par class="class2">

我想创建一个这样的模板:

<xsl:template match="par">
<xsl:if test="class=class1">
<fo:block
space-before="3pt"
space-after="3pt">

<xsl:apply-templates />

</fo:block>
</xsl:if>
<xsl:otherwise>
<fo:block
space-before="10pt"
space-after="10pt">

<xsl:apply-templates />

</fo:block>
</xsl:otherwise>
</xsl:template>

但它不起作用。如何测试标签的参数?

提前致谢。

最佳答案

起初<xsl:if/>是“独立”指令。您可以使用 xsl:choose ,如果您在默认情况下需要

在您的代码中 xsl:if测试 xpath 无效。使用 @attribute_name用于属性访问和字符串文字的单引号。

固定代码:

<xsl:template match="par">
<xsl:choose>
<xsl:when test="@class = 'class1'">
<fo:block
space-before="3pt"
space-after="3pt">
<xsl:apply-templates />
</fo:block>
</xsl:when>
<xsl:otherwise>
<fo:block
space-before="10pt"
space-after="10pt">
<xsl:apply-templates />
</fo:block>
</xsl:otherwise>
<xsl:choose>
</xsl:template>

但是对于你的任务还有更优雅的解决方案:

<xsl:template match="par">
<fo:block
space-before="10pt"
space-after="10pt">

<xsl:if test="@class = 'class1'">
<xsl:attribute name="space-before" select="'3pt'"/>
<xsl:attribute name="space-after" select="'3pt'"/>
</xsl:if>

<xsl:apply-templates />

</fo:block>
</xsl:template>

关于xml - 对标签参数进行 xslt 测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6149549/

25 4 0