xsl:当测试处理指令时

时间:2014-11-05 14:31:42

标签: xslt

我正在尝试创建一个选择语句,它检测处理指令

    <xsl:choose>
    <xsl:when test="chapter/descriptive/heading='processing-instruction("xm-replace_text")'">
        <xsl:template match="chapter/descriptive/heading"/>
    </xsl:when>
    <xsl:otherwise>
        <xsl:template match="chapter/descriptive/heading">
            <fo:block
             font-size="16pt"
             font-weight="bold"
             font-color="red"
             space-before="5mm"
             space-after="2mm">
                <xsl:number
                 count="chapter | task  | diagnosis | taskintervals | tools | lubrication | glossary"
                 format="1.1"
                 level="multiple"/>
                 &#160;
                 <xsl:value-of select="."/>
            </fo:block>
        </xsl:template>
    </xsl:otherwise>
</xsl:choose>

是否无法测试这样的处理指令?

编辑:xml输入(需要完整的xml吗?)

...    
<chapter infoclass-1="description" prodclass-1="setup">
<descriptive prodclass-1="setup" infoclass-1="intro">
<heading><?xm-replace_text Themenangabe in Form einer Überschrift ?></heading>
...

1 个答案:

答案 0 :(得分:3)

不,对字面上的处理指令进行节点测试,例如。

<xsl:template match="processing-instruction('xm-replace_text')">...</xsl:template>

会匹配pi <?xm-replace_text ...?>

使用您的示例XML假设您尝试匹配包含该特定处理指令的heading元素,然后使用

<xsl:template match="chapter/descriptive/heading[processing-instruction('xm-replace_text')]">...</xsl:template>

<xsl:template match="chapter/descriptive/heading/processing-instruction('xm-replace_text')">...</xsl:template>

如果你想匹配处理指令本身。