XPath选择NOT以大写字母开头的所有元素名称

时间:2013-06-12 09:00:21

标签: xpath xsd startswith

我有Schema Name.xsd,它是它的一部分,需要帮助在XPath中构建查询

    <xsd:complexType name="GetWalletItemBO">
    <xsd:sequence>
        <xsd:element minOccurs="1" name="paymentOptionId">
            <xsd:simpleType>
                <xsd:restriction base="xsd:string">
                    <xsd:maxLength value="50" />
                </xsd:restriction>
            </xsd:simpleType>
        </xsd:element>
        </xsd:sequence>
    </xsd:complexType>

我的基本查询就像//*[starts-with(name(),'**here I need to put my condition**')] 我必须检查xsd:complexType name是否以大写字母GetWalletItemBO开头而不是getWalletItemBO,并且检查<xsd:element name=以小写字母paymentOptionId开头的方式相同不像PaymentOptionId。 * 所以我尝试找到所有有不良输入的元素,不适合我的条件,这是以xsd中的小写字母开头:complexType name =,以及xsd中的大写字母:元素名称= *

2 个答案:

答案 0 :(得分:0)

不要使用name()而是local-name()来获取没有名称空间标识符的名称。然后,拆掉第一个字母,看看它是否包含在大写字母中:

//*[not(contains('ABCDEFGHIJKLMNOPQRSTUVWXYZ', substring(local-name(.), 1, 1)))]

答案 1 :(得分:0)

我想你想要:

//xs:complexType[matches(@name, '$\P{Lu}')]