0

XML スキーマの操作を学んでいます。「address.xsd」スキーマ ファイルに基づいて XML ファイルを作成します。

「アドレス.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>

アドレス.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>

なぜこれが機能しないのかわかりません。

4

2 に答える 2

0

実際、XSD は XML 生成ではなく xml の検証に使用されます。

于 2012-04-04T13:10:36.220 に答える
0

わかりました、私は問題を理解しました。名前空間に問題がありました。ここでは、有効な「address.xml」とともに「address.xsd」スキーマ ファイルを投稿しています。

アドレス.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>

アドレス.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>
于 2012-04-05T08:21:59.170 に答える