是否可以从处理指令中获取值?

问题描述

正如我在标题中所问的那样,是否可以从处理指令中获取值?

例如:

<root>
<?ConditionState 4?>
</root>

我尝试了多种方法来实现这一目标,但我所得到的只是一无所有...

这是我尝试的一种方法错误情况):

<root>
    <xsl:value-of select="root[?ConditionState]"></xsl:value-of>
</root>

我想实现这一目标:

<root>
    4
</root>

或者:

<root>
    3
</root>

我也尝试过: substring-after(substring-before(/root,'?>'),'<?ConditionState ') 但这也不起作用。

解决方法

<??>中包含的XML节点不是元素,它是处理指令,可以使用processing-instruction()节点测试。

见下文:

<xsl:template match="root">
        <xsl:value-of select="processing-instruction('ConditionState')"/>
</xsl:template>
    

请参见https://xsltfiddle.liberty-development.net/jxDjin4