我有一个XSD嵌入到一个XML这样的:
不区分大小写键
<Replacements>
<xs:schema elementFormDefault="qualified" xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name="Replacements">
<xs:complexType>
<xs:sequence>
<xs:element minOccurs="0" maxOccurs="unbounded" ref="Replace" />
</xs:sequence>
</xs:complexType>
<xs:key name="ReplaceKey">
<xs:selector xpath="./Replace"/>
<xs:field xpath="@old"/>
</xs:key>
</xs:element>
<xs:element name="Replace">
<xs:complexType>
<xs:attribute name="old" type="AnythingButLowerCase" use="required" />
<xs:attribute name="new" type="xs:string" use="required" />
</xs:complexType>
</xs:element>
<xs:simpleType name="AnythingButLowerCase">
<xs:restriction base="xs:string">
<xs:pattern value="[^a-z]+"/>
</xs:restriction>
</xs:simpleType>
</xs:schema>
<Replace old="A1020____9" new="A1020"/>
<Replace old="a1020____9" new="A1020"/>
</Replacements>
我使用的xs:关键定义的“老”替换元素属性的唯一键。
我的问题是我想这个密钥是不区分大小写的。
我看了这么多文件,说明我可以使用XSD功能,如大写或转化为解决这个问题,但如果我喜欢写东西
<xs:field xpath="upper-case(@old)"/>
VS2010给了我这样一个警告:
'upper-case(@old)' is an invalid XPath for selector or field.
我做错了什么?
谢谢:)
我使用大写,它只是在这里打错输入。但没有运气...... – Achilles