1

我在 stackoverflow 上找到了很多关于 xmllint 及其“命名空间支持”的主题,但没有一个对我有帮助。

这是我的 xml(准确地说是 xsd)文件:

<?xml version="1.0" encoding="UTF-8"?>
<xsd:schema xmlns="http://www.w3.org/2001/XMLSchema">
    <xsd:annotation>
        <xsd:documentation>My Text</xsd:documentation>
    </xsd:annotation>
</xsd:schema>

我想从此文件中检索“我的文本”链,所以我试试这个:

xmllint myfile.xsd --xpath "/*[namespace-uri()='http://www.w3.org/2001/XMLSchema' and 
name()='schema']/*[namespace-uri()='http://www.w3.org/2001/XMLSchema' and
name()='annotation']/*[namespace-uri()='http://www.w3.org/2001/XMLSchema' and
name()='documentation']/text()"

但它不起作用。我得到“分段错误”。

更新

我还有一个问题:我应该使用什么来在此文件中获取标签的属性“toto”值:

<?xml version="1.0" encoding="UTF-8"?>
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
    xmlns:toto="testAtributeValue">
    <xsd:annotation>
        <xsd:documentation>myText</xsd:documentation>
    </xsd:annotation>
</xsd:schema>

换句话说,我想得到“testAtributeValue”

4

1 回答 1

2

您的 XML 无效,因为未声明“xsd”前缀(甚至在问题的第二个 .version 中编辑的命令输出中报告了该前缀)。

xmlns:xsd=不想xmlns=

name()返回一个 QName。您想用来local-name()匹配本地名称。

于 2013-10-17T14:33:32.913 回答