libxml2 对包含“[”、“[”等特殊字符的元素类型 anyURI 的 xsd 架构验证失败

Ach*_*ius 2 xml validation xsd go libxml2

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

<xs:element name="url" type="xs:anyURI"> 
Run Code Online (Sandbox Code Playgroud)

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

xsd.schema.Validate(xml)
Run Code Online (Sandbox Code Playgroud)

以下是引发错误的示例 url

<url>
    <![CDATA[
        http://example.com/orda/var[div]=super
    ]]>
</url>
Run Code Online (Sandbox Code Playgroud)

错误:

'http://example.com/orda/var[div]=super is not a valid value of the atomic type 'xs:anyURI'
Run Code Online (Sandbox Code Playgroud)

常规网址工作正常。知道如何解决这个问题

cho*_*oba 5

请参阅RFC3986(重点是我的):

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

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