`

使用 xmllint + schema 校验 xml 文档

阅读更多

使用 xmllint + schema 校验 xml 文档

lyanry posted @ 2007年8月07日 20:42 in 文档标记语言 with tags XML xmllint schema ,

 

XML 校验工具的作用就是检查我们写的 XML 源文件是否符合所声明要遵循的规范,xmllint 就是一款很实用的 XML 校验器,下面通过一个例子,演示一下 xmllint 如何结合 schema 对xml 文档进行校验。本文未涉及 schema 的语法介绍。

首先建立一份 xml 文档,命名为 po.xml,其内容如下:

<?xml version ="1.0" ?>
<purchaseOrder orderDate ="1999-10-20" >
    <shipTo country ="US" >
        <name> Alice Smith</name>
        <street> 123 Maple Street</street>
        <city> Mill Valley</city>
        <state> CA</state>
        <zip> 90952</zip>
    </shipTo>
    <billTo country ="US" >
        <name> Robert Smith</name>
        <street> 8 Oak Avenue</street>
        <city> Old Town</city>
        <state> PA</state>
        <zip> 95819</zip>
    </billTo>
    <comment> Hurry, my lawn is going wild!</comment>
    <items>
        <item partNum ="872-AA" >
            <productName> Lawnmower</productName>
            <quantity> 1</quantity>
            <USPrice> 148.95</USPrice>
            <comment> Confirm this is electric</comment>
        </item>
        <item partNum ="926-AA" >
            <productName> Baby Monitor</productName>
            <quantity> 1</quantity>
            <USPrice> 39.98</USPrice>
            <shipDate> 1999-05-21</shipDate>
        </item>
    </items>
</purchaseOrder>

然后为 po.xml 写的 schema 文件,取名为 po.xsd,内容如下:

<xsd:schema xmlns:xsd ="http://www.w3.org/2001/XMLSchema" >
 <xsd:annotation>
  <xsd:documentation xml:lang ="en" >
   Purchase order schema for Example.com.
   Copyright 2000 Example.com. All rights reserved.
  </xsd:documentation>
 </xsd:annotation>
 <xsd:element name ="purchaseOrder" type ="PurchaseOrderType" />
 <xsd:element name ="comment" type ="xsd:string" />
 <xsd:complexType name ="PurchaseOrderType" >
  <xsd:sequence>
   <xsd:element name ="shipTo" type ="USAddress" />
   <xsd:element name ="billTo" type ="USAddress" />
   <xsd:element ref ="comment" minOccurs ="0" />
   <xsd:element name ="items"   type ="Items" />
  </xsd:sequence>
  <xsd:attribute name ="orderDate" type ="xsd:date" />
 </xsd:complexType>
 <xsd:complexType name ="USAddress" >
  <xsd:sequence>
   <xsd:element name ="name"    type ="xsd:string" />
   <xsd:element name ="street" type ="xsd:string" />
   <xsd:element name ="city"    type ="xsd:string" />
   <xsd:element name ="state"   type ="xsd:string" />
   <xsd:element name ="zip"     type ="xsd:decimal" />
  </xsd:sequence>
  <xsd:attribute name ="country" type ="xsd:NMTOKEN"
     fixed ="US" />

 </xsd:complexType>
 <xsd:complexType name ="Items" >
  <xsd:sequence>
   <xsd:element name ="item" minOccurs ="0" maxOccurs ="unbounded" >
    <xsd:complexType>
     <xsd:sequence>
      <xsd:element name ="productName" type ="xsd:string" />
      <xsd:element name ="quantity" >
       <xsd:simpleType>
        <xsd:restriction base ="xsd:positiveInteger" >
         <xsd:maxExclusive value ="100" />
        </xsd:restriction>
       </xsd:simpleType>
      </xsd:element>
      <xsd:element name ="USPrice"   type ="xsd:decimal" />
      <xsd:element ref ="comment"    minOccurs ="0" />
      <xsd:element name ="shipDate" type ="xsd:date" minOccurs ="0" />
     </xsd:sequence>
     <xsd:attribute name ="partNum" type ="SKU" use ="required" />
    </xsd:complexType>
   </xsd:element>
  </xsd:sequence>
 </xsd:complexType>
 <!-- Stock Keeping Unit, a code for identifying products -->
 <xsd:simpleType name ="SKU" >
  <xsd:restriction base ="xsd:string" >
   <xsd:pattern value ="\d{3}-[A-Z]{2}" />
  </xsd:restriction>
 </xsd:simpleType>
</xsd:schema>

使用 xmllint 对 po.xml 文件进行校验:

$ xmllint   -schema po.xsd po.xml

如果无出错信息,就说明校验通过了。

 

 

 

校验1个xml是否格式正确,可用如下命令:

$xmllint example.xml

 

 

分享到:
评论
1 楼 powerclark 2010-02-01  
xmllint 校验xml的工具~~~
如果xml文件出问题,那么能够被查出来。。。。

相关推荐

    Java Web开发详解:XML+DTD+XML Schema+XSLT+Servlet3.0+JSP2.2深入剖析与实例应用/孙鑫编著

    《Java Web开发详解——XML+DTD+XML Schema+XSLT+Servlet3.0+JSP2.2深入剖析与实例应用》语言生动、通俗易懂、讲解细致,大部分章节都提供了多个例子,而且很多例子都是目前Web开发中经常使用的功能,具有相当高的...

    Java通过XML Schema校验XML

    XML Schema(XSD)作为一种用于描述XML文档结构和数据类型的标准,提供了更为强大的数据类型支持和约束定义能力,相较于早期的DTD(Document Type Definition),XSD被更多地应用于XML文档的校验中。 然而,Java中...

    通过Schema验证XML格式是否正确

    5. **XmlSchema类**:该类用于加载和处理XML Schema文件,可以创建一个XmlSchema对象来读取XSD文件,并构建出XML文档必须遵循的结构模型。 6. **XmlDocument类**:此类代表XML文档,提供加载XML数据、验证文档以及...

    根据xml schema生成xml

    这篇博客文章“根据XML Schema生成XML”探讨了如何使用XML Schema来创建符合规范的XML文档。 首先,理解XML Schema的基本元素是关键。XML Schema定义了一系列的元素(element)、属性(attribute)和数据类型(data...

    XML+Schema中文教程

    w3c XML Schema 中文教程CHM文档

    XML+Schema ppt课件

    Schema,全称为XML Schema Definition (XSD),是W3C推荐的XML文档结构的规范,用于定义XML文档的结构、数据类型和约束,使得XML文档更加正规化,提高数据交换的准确性和可靠性。 在“XML+Schema ppt课件”中,我们...

    schema校验问题

    Schema校验通常发生在数据库、XML文档、JSON数据等场景,确保数据符合预定义的格式和规则,从而保证数据的一致性和准确性。 在描述中提到的“博文链接:https://jarip.iteye.com/blog/1953352”,虽然具体内容未给...

    XSD使用dom4j校验XML

    DOM4J提供了一种简单的方法来加载XML和XSD文件,然后使用Schema类进行校验。以下是一个基本的步骤概述: 1. 加载XSD文件:使用DOM4J的DocumentHelper类的parse方法,传入XSD文件的路径,得到一个SchemaFactory对象...

    notepad++XML格式化工具(含32位和64位)

    Notepad++的XML插件正为此目的而设计,它可以自动整理XML文件的缩进、换行,使得文档结构清晰易读。 在Notepad++中安装XML格式化工具非常简单。首先,你需要确保下载了与你的系统匹配的版本,即32位或64位的安装...

    Schema校验java

    以下是一个使用JAXB(Java Architecture for XML Binding)进行XML Schema校验的简单示例: ```java import javax.xml.XMLConstants; import javax.xml.bind.JAXBContext; import javax.xml.bind.JAXBException; ...

    Schema教程 xml

    XML Schema定义(XSD)使用XML语法,使得XML文档的验证和处理更加方便。在这个教程中,我们将深入探讨XML Schema的核心概念、优势以及如何在实际应用中使用。 1. XML Schema简介 XML Schema的主要目标是定义XML文档...

    notepad++(包含xml tools等插件)

    例如,它可以自动完成XML标签,验证XML文档是否符合指定的DTD(Document Type Definition)或XSD(XML Schema)规范,还可以进行XPath查询,方便用户快速定位到XML文档中的特定节点。此外,XML Tools还支持XML到HTML...

    XML与XMLSchema

    【XML与XMLSchema】 ...了解并掌握XML和XML Schema对于进行Web服务、数据交换、配置文件管理和各种数据存储等任务至关重要。它们是现代信息技术中不可或缺的一部分,广泛应用于软件开发、网络通信和数据集成等领域。

    Note pad++ XMLTools 3.0.3 安装包

    1. **XML验证**:XMLTools可以自动验证XML文档是否符合其指定的DTD(文档类型定义)或XSD(XML Schema定义)。这有助于确保文档的结构正确无误,遵循预设的规则。 2. **XML格式化**:此插件能够将杂乱无章的XML代码...

    (jsp+servlet+xml)xml绑定

    本项目“(jsp+servlet+xml)xml绑定”着重于Java技术如何与XML进行交互,通过JSP(JavaServer Pages)和Servlet来实现XML文档的解组、编组以及动态内容修改。以下将详细介绍这个过程中的关键知识点。 首先,XML...

    IEC61850 SCL文件Schema校验

    IEC61850 SCL文件Schema校验 1、支持Schema1.0和Schema2.0版本 2、支持自定义Schema版本 3、支持信息输出,格式包括PDF,CSV,TXT

    XSD根据xml生成schema文件

    本篇文章将深入探讨如何根据XML文件生成对应的XSD schema文件,以便更好地管理和验证XML文档。 首先,我们需要理解XSD的作用。XSD文件定义了一系列规则,这些规则描述了XML文档应该包含哪些元素、属性,以及它们...

    DTD和Schema规范XML文档

    [实验目的]: 1、掌握使用XMLSpy软件创建DTD和Schema文档 2、掌握在XML文档如何引入DTD和Schema,并验证有效 3、掌握DTD中声明元素、属性的方法 4、掌握Schema中声明元素,属性,类型的方法

    XML文件XML Schema.docXML Schema.doc

    "XML Schema知识点" XML Schema是XML语言为基础的,它用于可替代DTD。它用于描述XML文档的结构。XML Schema语言也被...XML Schema是XML文档的结构描述语言,它具有强大的功能和可扩展性,是XML文档的标准描述语言。

    solrconfig.xml和schema.xml说明

    ### Solrconfig.xml 和 Schema.xml 说明 #### Solrconfig.xml 概述 Solrconfig.xml 是 Apache Solr 的核心配置文件之一,主要用于定义 Solr 实例如何处理文档的索引与查询请求。该文件中包含了多种配置项,用于...

Global site tag (gtag.js) - Google Analytics