将XSL与良好的表达式XML相匹配

时间:2016-08-26 07:51:28

标签: xml xslt

我收回了同事的程序

在我的XML中,我搜索匹配XSL仅当从附件开始的段落不在CELL父级中时

例如:

         <BODY>
            .............
            <CELL>
                <PARAGRAPH align="centre">32</PARAGRAPH>
                <PARAGRAPH align="centre">annexe V</PARAGRAPH>
            </CELL>
            .............
            <PARAGRAPH align="centre">annexe C</PARAGRAPH>
            .............
         </BODY>

实际的XSL是(&amp; start-annexe;只是当元素PARAGRAPH以annexe开头时匹配的函数):

<xsl:template match="PARAGRAPH[(@align='center' or @align='left') and &start-annexe;]">
  <Annexe>
    <xsl:apply-templates select="@*|node()"/>
  </Annexe>
</xsl:template>

实际结果是:

 <BODY>
    .............
    <CELL>
        <PARAGRAPH align="centre">32</PARAGRAPH>
        <ANNEXE>annexe V</ANNEXE>
    </CELL>
    .............
    <ANNEXE>annexe C</ANNEXE>
    .............
 </BODY>

我想:

 <BODY>
    .............
    <CELL>
        <PARAGRAPH align="centre">32</PARAGRAPH>
        <PARAGRAPH align="centre">annexe V</PARAGRAPH>
    </CELL>
    .............
    <ANNEXE>annexe C</ANNEXE>
    .............
 </BODY>

我尝试了几种可能性,但我没有成功......

例如

<xsl:template match="PARAGRAPH[(@align='center' or @align='left') and &start-annexe; and not(parent::CELL)]">
你可以帮帮我吗? 感谢

1 个答案:

答案 0 :(得分:1)

我相信您正在寻找starts-with功能

<xsl:template match="PARAGRAPH[(@align='center' or @align='left')
    and starts-with(., 'annexe')
    and not(parent::CELL)]">