SimpleContet元素

作用:应用于complexType,对它的内容进行约束和扩展

simplexContent元素用于Complex元素里,用于限定ComplexType的内容类型,表示ComplexType`没有子元素,同时该ComplexType需要有属性,否则它就成为SimpleType了。

代码示例

<?xml version="1.0" encoding="utf-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
    <xs:element name="shoeSize">
        <xs:complexType>
            <xs:simpleContent>
        <xs:extension base="xs:decimal">
            <xs:attribute name="sizing" use="required">
            <xs:simpleType>
                <xs:restriction base="xs:string">
                    <xs:enumeration value="us"></xs:enumeration>
                    <xs:enumeration value="europe"></xs:enumeration>
                    <xs:enumeration value="uk"></xs:enumeration>
                </xs:restriction>
            </xs:simpleType>
            </xs:attribute>
        </xs:extension>
            </xs:simpleContent>
        </xs:complexType>
    </xs:element>
</xs:schema>

extension表示这个元素类型


意思是:定义了个shoeSize元素,类型是decimal,然后定义了一个属性sizing,是简单类型,取值范围是,us、europe、uk。

实现:类型都是标签里面的数据

<?xml version="1.0" encoding="UTF-8"?>
<shoeSize sizing="europe" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="file:///C:/Users/a364482611/Desktop/Untitled1.xsd">22</shoeSize>

choice元素

作用:允许唯一的一个元素从一个组中被选择

属性:minOccurs/maxOccurs

<?xml version="1.0" encoding="utf-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
    <xs:element name="helloword" type="myType">
    </xs:element>
    <xs:element name="hello" type="xs:string"/>
    <xs:complexType name="myType">
    <xs:choice minOccurs="1" maxOccurs="1">
        <xs:element name="wo" type="xs:string"/>
        <xs:element ref="hello"/>
    </xs:choice>
    </xs:complexType>
</xs:schema>

意思就是从choice 中抽出一个

<?xml version="1.0" encoding="UTF-8"?>
<helloword xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
           xsi:noNamespaceSchemaLocation="schema1.xsd"  >
    <hello></hello>
</helloword>

然后修改maxOccurs为3

<?xml version="1.0" encoding="UTF-8"?>
<helloword xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
           xsi:noNamespaceSchemaLocation="schema1.xsd"  >
    <hello></hello>
    <hello></hello>
    <wo></wo>
</helloword>

XML结果这样,maxOccurs真对choice这个整体来说的,没次抽取其中一个

sequence元素

作用:给一组元素一个特定的序列

<?xml version="1.0" encoding="utf-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
    <xs:element name="helloword" type="myType">
    </xs:element>
    <xs:element name="hello" type="xs:string"/>
    <xs:complexType name="myType">
    <xs:sequence minOccurs="1" maxOccurs="3">
        <xs:element name="wo" type="xs:string"/>
        <xs:element ref="hello"/>
    </xs:sequence>
    </xs:complexType>
</xs:schema>

同上面例子基本上差不多,只不过是必须按照顺序 wo hello这么出现、必须sequence里面的元素一起出现,不能缺少。

<?xml version="1.0" encoding="UTF-8"?>
<helloword xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
           xsi:noNamespaceSchemaLocation="schema1.xsd"  >
    <wo></wo>
    <hello></hello>
    <wo></wo>
    <hello></hello>
    <wo></wo>
    <hello></hello>
</helloword>

关于schema根元素

当我们定义完schema后、生成的XML代码是多种的,全靠用户自己去定义结果

代码示例

<?xml version="1.0" encoding="utf-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
    <xs:element name="helloword" type="myType">
    </xs:element>
    <xs:element name="hello" type="xs:string"/>
    <xs:complexType name="myType">
    <xs:sequence minOccurs="1" maxOccurs="1">
        <xs:element name="wo" type="xs:string"/>
        <xs:element ref="hello"/>
    </xs:sequence>
    </xs:complexType>
    <xs:element name="word" type="myType">
    </xs:element>
</xs:schema>

生成的xml代码有三种可能性

<?xml version="1.0" encoding="UTF-8"?>
<word xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
           xsi:noNamespaceSchemaLocation="schema1.xsd"  >
    <wo></wo>
    <hello></hello>
</word>
<?xml version="1.0" encoding="UTF-8"?>
<helloword xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
           xsi:noNamespaceSchemaLocation="schema1.xsd"  >
    <wo></wo>
    <hello></hello>
</helloword>
<?xml version="1.0" encoding="UTF-8"?>
<hello xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
           xsi:noNamespaceSchemaLocation="schema1.xsd"  >
</hello>

以上的结果都是正确的

PHP之DOMDocument对象

<?php

$dom=new DOMDocument('1.0');
$book =$dom->appendChild($dom->createElement('book'));
$title=$book->appendChild($dom->createElement('title'));
$title->appendChild($dom->createTextNode('PHP Cookbood'));
$title->setAttribute('edition','3');
$sklar=$book->appendChild($dom->createElement('author'));
$sklar->appendChild($dom->createTextNode('Sklar'));

$trachtenberg=$book->appendChild($dom->createElement('author'));
$trachtenberg->appendChild($dom->createTextNode('Trachenberg'));

$dom->formatOutput=true;
echo $dom->saveXML();

//$dom->save('books.xml');

$domm=new DOMDocument('1.0');
$domm->load('./books.xml');
var_dump($domm->nodeType);
echo "<hr/>";
$authors=$domm->getElementsByTagName('title');
var_dump($authors);
echo "<hr/>";
$sx=simplexml_load_file(__DIR__.'/books.xml');

var_dump($sx->book);
echo "<hr/>";
Last modification:January 7, 2020
如果觉得我的文章对你有用,请随意赞赏