2015-08-28 70 views
1

有人知道为什么以下方法无效吗?该XSD是使用Xerces验证包含单引号的XSD 1.1声明测试

<xs:element name="myElement"> 
    <xs:complexType> 
    <xs:complexContent> 
     <xs:extension base="myElementType"> 
     <xs:assert test="firstname = 'George' and lastName = 'Mc&apos;Falrland'" /> 
     </xs:extension> 
    </xs:complexContent> 
    </xs:complexType> 
</xs:element> 

当我使用单引号&apos;实体错误命中...

感谢

回答

2

你的问题与XPath字符串文字,如XSD 1.1使用XPath 2.0你可以通过编写定界符两次逃脱一个字符串内的撇号或引号,所以你可以使用:

<xs:assert test="firstname = 'George' and lastName = 'Mc''Falrland'" /> 

欲了解更多信息哟u可以使用XPath 2.0 specs, section Literals

如果文字是由撇号界定,内字面两个相邻的撇号 被解释为单个撇号。同样, 如果文字是用引号分隔的,则文字内的两个相邻引号 标记会被解释为一个引号。

+0

谢谢。这比我所做的要好很多 “firstname = " George " and lastName ='Mc ' Falrland'” – unicorn

+0

不客气,如果这很有用并且解决了你的问题,你必须接受答案(勾选勾号,已经完成)并提出答案点击上面的灰色三角,提前感谢。 – sergioFC