如何在XSLT中选择一个确切的字符串

时间:2014-01-14 16:24:38

标签: xml xslt xslt-1.0

我需要在XML文档中选择一个精确值为“RM”的字符串。

以下是我的文档示例。请注意,其他节点的结构和值不是永久性的,因此我无法使用相对位置来帮助我。

?xml version="1.0" encoding="UTF-16"?>
<?xml-stylesheet type="text/xsl" href="XSLT.xsl"?>
<document xmlns="http://www.scansoft.com/omnipage/xml/ssdoc-schema3.xsd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
    <page ocr-vers="OmniPageCSDK18" app-vers="OmniPage 19">
        <description>
            <source file="C:\Users\User\Documents\OCR\Unprocessed\7740412639.pdf" dpix="300" dpiy="300" sizex="2480" sizey="3509"/>
            <theoreticalPage size="A4" marginLeft="1440" marginTop="0" marginRight="1440" marginBottom="1440" offsetX="-2" offsetY="-2" width="11918" height="16854"/>
        </description>
        <body>
            <dd l="87" t="322" r="9667" b="16536">
                <dd l="115" t="322" r="9667" b="16536">
                    <picture l="115" t="322" r="9667" b="16536" alignment="left">
                    </picture>
                </dd>
                <dd l="7205" t="1166" r="7366" b="1392">
                    <para l="7234" t="1171" r="7334" b="1392" alignment="left" spaceBefore="29" spaceAfter="24" lsp="exactly" lspExact="100" language="en">
                        <ln l="7234" t="1171" r="7334" b="1392" baseLine="1319" underlined="none" subsuperscript="none" fontSize="700" fontFace="Times New Roman" fontFamily="roman" fontPitch="variable" spacing="-40">
                            <wd l="7234" t="1171" r="7334" b="1392">ARMARMRM</wd>
                        </ln>
                    </para>
                </dd>
                <dd l="6859" t="1114" r="7020" b="1426">
                    <para l="6888" t="1118" r="6989" b="1426" alignment="left" spaceBefore="29" spaceAfter="23" lsp="exactly" lspExact="101" language="en">
                        <ln l="6888" t="1118" r="6989" b="1426" baseLine="1307" underlined="none" subsuperscript="none" fontSize="700" fontFace="Times New Roman" fontFamily="roman" fontPitch="variable" spacing="-31">
                            <wd l="6888" t="1118" r="6989" b="1426">RM</wd>
                        </ln>
                    </para>
                </dd>
            </dd>
        </body>
    </page>
</document>

我尝试使用contains并确保该值为NaN。我也研究了如何使用matches并查看了正则表达式,尽管这显然只在XSLT 2中可用。

在XSLT中有没有办法做到这一点?如果是这样,怎么样?

澄清 当我说 请注意,其他节点的结构和值不是永久性的我的意思是您不能使用Xpath导航到节点,因为该Xpath可以更改。

1 个答案:

答案 0 :(得分:0)

以下选择仅包含 字母“RM”的字符串:

//ss:wd[. = 'RM']