如何匹配XSLT中的处理指令元素?
我的xml内容中有一些处理说明元素,例如:如何匹配XSLT中的处理指令元素?,xslt,xpath,processing-instruction,Xslt,Xpath,Processing Instruction,我的xml内容中有一些处理说明元素,例如: <?legalnoticestart?> <?sourcenotestart?> <para>Content para</para> <?sourcenoteend?> <?literallayoutstart?> <para>body content </para> <?literallayoutend?> <?legalnoticeen
<?legalnoticestart?>
<?sourcenotestart?>
<para>Content para</para>
<?sourcenoteend?>
<?literallayoutstart?>
<para>body content </para>
<?literallayoutend?>
<?legalnoticeend?>
内容段落
身体内容
如何匹配这些元素并以下面所需的元素格式获取内容
所需的xml:
<legalnotice>
<sourcenote>
<p>Content para</p>
</sourcenote>
<literallayout>
<p>body content</p>
</literallayout>
</legalnotice>
内容段落
身体内容
请告知
致以最良好的祝愿,
Antony默认情况下,XSLT处理程序将忽略PI-为了匹配它们,为了做有趣和有用的事情,您可以在模板中使用处理指令匹配:
<xsl:template match="processing-instruction('legalnoticestart')">
<legalnotice><xsl:value-of select="."/></legalnotice>
</xsl:template>
例如,以下样式表:
<?xml version="1.0" encoding="ISO-8859-1"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="doc">
<xsl:apply-templates select="processing-instruction('legalnoticestart')" />
</xsl:template>
<xsl:template match="processing-instruction('legalnoticestart')">
<legalnotice><xsl:value-of select="."/></legalnotice>
</xsl:template>
</xsl:stylesheet>
在本文件中:
<doc>
<?legalnoticestart?>
<?legalnoticeend?>
</doc>
收益率:
<?xml version="1.0"?>
<legalnotice>
</legalnotice>
这本来就是一个糟糕的设计,您似乎试图匹配开始/结束标记,但如果要使用实际的xml元素,则没有使用可用的方法
虽然可以匹配开始/结束处理指令,但使用xpath很难在所述处理指令之间定位节点。如果您有嵌套或重复这样的指示,它可能会变得更加困难。最后,所有这些都是在尝试复制xml已经在不使用xml的情况下所做的事情?抱歉,它不起作用,我只是获取没有任何元素的内容。您好,我在使用您的第二个代码时没有获取内容。。。我只得到这个元素…所以它是有效的!我的代码只是一个小片段,用来演示如何处理这个问题。