2012-04-04 73 views
0

我正在学习如何使用XML模式。 我想创建基于 “address.xsd” 模式文件的XML文件:需要帮助从XSD模式创建XML文件

“address.xsd”

<?xml version="1.0" encoding="utf-8" ?> 
<xs:schema 
    elementFormDefault="qualified" 
    targetNamespace="com.namespace.address" 
    xmlns:xs="http://www.w3.org/2001/XMLSchema"> 
    <xs:complexType name="AddressDetails"> 
     <xs:sequence> 
      <xs:element name="building" type="xs:string" /> 
      <xs:element name="street" type="xs:string" /> 
      <xs:element name="city" type="xs:string" /> 
      <xs:element name="country" type="xs:string" /> 
     </xs:sequence> 
    </xs:complexType> 
</xs:schema> 

address.xml

<?xml version="1.0" encoding="utf-8"?> 

    <a:AddressDetails 
     xmlns:a="com.namespace.address" 
     xsi:schemaLocation="D:/Prac/XML/address.xsd" 
     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" >  
     <a:building>Crosswords</a:building> 
     <a:street>MainStreet</a:street> 
     <a:city>LA</a:city> 
     <a:country>USA</a:country>  
    </a:AddressDetails> 

荫不明白为什么这不起作用。

+0

你怎么知道它不工作?换句话说,你得到了什么错误信息? – 2012-04-04 13:06:25

+0

我正在使用XML编辑器“Liquid XML Studio”来创建XSD以及XML文件。在XML文件中,编辑器提供了以下错误消息:“未声明”com.namespace.address:AddressDetails“元素。” – 2012-04-04 13:14:33

回答

0

其实XSD来验证XML不是XML生成

+0

是的,那就是我想要做的。我想验证“address.xml”对“address.xsd”。换句话说,我想写一个遵循“address.xsd”定义的XML文件。 – 2012-04-04 13:12:25

+0

@AshAsh你把**我想创建一个XML文件?? **这就是为什么我很困惑希望它有帮助http://stackoverflow.com/questions/15732/whats-the-best-way-to-validate- an-xml-file-against-an-xsd-file – BALASCJP 2012-04-04 13:19:10

+0

对不起,如果我没有正确地框出问题。我是这个XML模式主题的新手。我想问的是,我得到了一个XML模式,并希望根据该模式编写一个XML文件。 – 2012-04-04 13:25:24

0

好吧,我想通了这个问题。命名空间存在一些问题。在这里,我发布了“address.xsd”模式文件以及有效的“address.xml”。

address.xsd

<?xml version="1.0" encoding="utf-8" ?> 
<xs:schema elementFormDefault="qualified" targetNamespace="com.namespace.address" xmlns:xs="http://www.w3.org/2001/XMLSchema"> 
    <xs:complexType name="AddressDetails"> 
     <xs:sequence> 
      <xs:element name="building" type="xs:string" /> 
      <xs:element name="street" type="xs:string" /> 
      <xs:element name="city" type="xs:string" /> 
      <xs:element name="country" type="xs:string" /> 
     </xs:sequence> 
    </xs:complexType> 
    <xs:element name="address" xmlns:q1="com.namespace.address" type="q1:AddressDetails" /> 
</xs:schema> 

address.xml

<?xml version="1.0" encoding="utf-8"?>    
<a:address xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="com.namespace.address address.xsd" xmlns:a="com.namespace.address"> 
    <a:building>Crosswords</a:building> 
    <a:street>Main Street</a:street> 
    <a:city>LA</a:city> 
    <a:country>USA</a:country> 
</a:address>