需要帮助从XSD架构创建XML文件

时间:2012-04-04 13:04:53

标签: xsd schema

我正在学习使用XML模式。 我想基于“address.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>

我不知道为什么这不起作用。

2 个答案:

答案 0 :(得分:0)

实际上,XSD用于验证xml不用于XML生成

答案 1 :(得分:0)

好的,我已经找到了问题所在。名称空间存在一些问题。在这里,我发布了&#34; address.xsd&#34;模式文件以及有效的&#34; address.xml&#34;。

<强> 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>