Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/xslt/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何匹配XSLT中的处理指令元素?_Xslt_Xpath_Processing Instruction - Fatal编程技术网

如何匹配XSLT中的处理指令元素?

如何匹配XSLT中的处理指令元素?,xslt,xpath,processing-instruction,Xslt,Xpath,Processing Instruction,我的xml内容中有一些处理说明元素,例如: <?legalnoticestart?> <?sourcenotestart?> <para>Content para</para> <?sourcenoteend?> <?literallayoutstart?> <para>body content </para> <?literallayoutend?> <?legalnoticeen

我的xml内容中有一些处理说明元素,例如:

<?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的情况下所做的事情?

抱歉,它不起作用,我只是获取没有任何元素的内容。您好,我在使用您的第二个代码时没有获取内容。。。我只得到这个元素…所以它是有效的!我的代码只是一个小片段,用来演示如何处理这个问题。