【问题标题】:How can I validate XML with XSD in Perl?如何在 Perl 中使用 XSD 验证 XML?
【发布时间】:2010-01-09 22:35:32
【问题描述】:

对于大多数 Perl 程序员来说,这可能是一个简单的问题,到目前为止,我只使用 Perl 两个星期,对 Perl 包非常陌生。

我有一个简单的 XSD 文件如下:

<?xml version="1.0" ?>
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:sql="urn:schemas-microsoft-com:mapping-schema">
    <xsd:element name="elementname">
        <xsd:complexType>
            <xsd:sequence>
                <xsd:element name="field1" type="xsd:integer" minOccurs="0" maxOccurs="1"/>
                <xsd:element name="field2" type="xsd:string" minOccurs="0" maxOccurs="1"/>              
            </xsd:sequence>
        </xsd:complexType>
    </xsd:element>
</xsd:schema>

我很想用上述 XSD 验证 XML 文件,以确保这是一个有效的 XML。我应该使用什么 Perl 模块?我更喜欢在 *nix 上的 ActivePerl 和 Perl 上都可用的模块。发布一些代码 sn-ps 会非常有帮助。

谢谢

【问题讨论】:

标签: xml perl xsd


【解决方案1】:

我认为您需要来自 CPAN 的XML::Validator::Schema。这是README,然后安装:

perl -MCPAN -e 'install XML::Validator::Schema'

【讨论】:

  • @Brian - 感谢您的快速回复,我在 ActivePerl 上找不到这个模块。 ActivePerl 上有什么好的选择吗?我希望找到一个可以在 Windows 和 Linux 上运行的模块。
  • 如果你必须在 windows 上使用 perl,我建议你改用草莓 perl。 ** strawberryperl.com ** 它比 ActivePerl 好得多(在包覆盖率(以及其他方面)方面)我提供了一个适当的 CPAN chell 来安装和编译更多的包。
  • 我不知道,恐怕。我希望 ActivePerl 会支持 CPAN,但也许不会。
  • @Nifle - 不幸的是,我没有选择切换到草莓perl。无论如何,谢谢你提出来。
  • ActivePerl 确实“支持 CPAN”,以及这个模块(以及其他数千个模块)。它在ppm4.activestate.com/idx/X...Z.html的列表中
【解决方案2】:

XML::LibXML::Schema 有一个validate 方法。

另请参阅我对Why does my XSD file fail to parse with XML::LibXML? 的回复。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-05-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多