2012-04-04 91 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>