一尘不染

libxml2在元素类型anyURI包含特殊字符(例如“ [”,“ [”)的xsd模式验证上失败

go

我正在使用go-libxml2进行xsd模式验证。我有一个将url作为值的XML元素。我的xsd还包含其类型为anyURI,如下所示

<xs:element name="url" type="xs:anyURI">

以下代码在包含“ []”的验证网址上引发错误

xsd.schema.Validate(xml)

以下是引发错误的示例网址

<url>
    <![CDATA[
        http://example.com/orda/var[div]=super
    ]]>
</url>

错误:

'http://example.com/orda/var[div]=super is not a valid value of the atomic type 'xs:anyURI'

常规网址可以正常工作。任何想法如何解决这个问题


阅读 286

收藏
2020-07-02

共1个答案

一尘不染

参见RFC3986(强调我的):

由Internet协议文字地址版本6 [RFC3513]或更高版本标识的主机通过将IP文字括在方括号(“ [”和“]”)中来区分。这是URI语法中
唯一允许使用方括号字符的地方

尝试分别用%5b和替换它们%5d

2020-07-02