Heim  >  Artikel  >  Backend-Entwicklung  >  Detaillierte Einführung in Schemacode in XML (Bild)

Detaillierte Einführung in Schemacode in XML (Bild)

黄舟
黄舟Original
2017-03-10 19:19:221637Durchsuche

XML verfügt über die Schema-Funktion, die die Elementstruktur wirkungsvoller als DTD einführen kann. Lassen Sie uns das Konzept, die Funktion und die Verwendung von Schemata in XML ausführlicher erklären Das Modell stellt Spezifikationen für XML-Dokumente bereit. Obwohl die Einführung von DTD das Standardisierungsproblem von XML-Dokumenten löst, stimmt sein Dateiformattyp nicht mit dem XML-Dateiformattyp überein. Gleichzeitig sind die von DTD bereitgestellten Datentypen begrenzt und können manchmal nicht erfüllt werden Um den Anforderungen der Branche gerecht zu werden, wird Schema eingeführt. Der Schemamodus kann die Struktur von Elementen und Attributen eines XML-Dokuments, die Reihenfolge von Elementen, die Datenwerte von Elementen und Attributen anhand von Bereichen, Aufzählungen und Stilübereinstimmungen bestimmen.


Detaillierte Einführung in Schemacode in XML (Bild)

1. Erste Einführung in Schema

XML-Schema-Sprache wird auch XML-Schema-Definition (XSD) genannt Eine Gruppe rechtlicher Komponenten eines XML-Dokuments (die Struktur eines XML-Dokuments), genau wie eine DTD. XML-Schema basiert auf der XML-Sprache. Man kann auch sagen, dass XML-Schema selbst eine Anwendung von XML ist.

1. Die Rolle von Schema

XML-Schema und DTD haben die gleiche Rolle. Sie werden beide verwendet, um die Struktur eines XML-Dokuments zu definieren Benötigen Sie eine DTD? Was ist mit einem XML-Schema? Weil XML-Schema leistungsfähiger ist als DTD.

Die Vorteile des XML-Schemas gegenüber DTD:

(1) Das Schema ist erweiterbar

(2) Das Schema ist umfangreicher und nützlicher als DTD
(3) Das Schema verwendet XML Written
(4) Schema unterstützt Datentypen
(5) Schema unterstützt Namespace
(6) Es ist nicht erforderlich, andere Sprachen zu lernen
(7) Der XML-Editor kann direkt zum Schreiben von XML-Schemas verwendet werden
(8) XML-Parser kann direkt zum Parsen von XML-Schemas verwendet werden
(9) XML-DOM kann zum flexiblen Betrieb von XML-Schemas verwendet werden
(10) XSLT-Technologie kann zum Konvertieren von XML-Schemas verwendet werden

2. Vergleichendes Lernen

1.1 Funktionell

sind beide Muster, die die Struktur eines XML-Dokuments definieren.

1.2 Verwendung

Beide haben die gleiche Funktion, es gibt jedoch einige Unterschiede in der Syntax. Schema ist eine Erweiterung von DTD, und die Definitionssyntax ist ähnlich. Schema kann jedoch auch die Syntax globaler und lokaler Elementdeklarationen hinzufügen Darüber hinaus werden gemäß den Elementen und Attributen des Dateninhalts einfache Typen und komplexe Typen eingeführt.

Die sogenannten einfachen Typen (SimpleType) und komplexen Typen (ComplexType) sind selbst keine spezifischen Datentypen, sondern lediglich abstrakte Beschreibungen der Knotentypen oder benutzerdefinierten Typen.


Mit anderen Worten: Durch die Einführung von Schema wird die Deklaration von Mustern der von uns verwendeten Programmiersprache ähnlicher.

2. Detaillierte Erläuterung der Beispiele

2.1 Schemabeispiele

Listing 1: User.xml-Dokumentstruktur

XML/HTML Code复制内容到剪贴板
<?xml version="1.0"?>
<用户列表>
    <用户>
         <用户名>xx</用户名>
         <密码>123456</密码>
         <用户类型>1</用户类型>
   </用户>
</用户列表>


Listing 2: Global verwenden Komponentenformular So definieren Sie das Schema, Benutzer 🎜>

Listing 3: Definieren Sie das Schema mithilfe der Teilform User.xsd

XML/HTML Code复制内容到剪贴板
<!-- 使用全局组件形式定义 -->
<?xml version=&#39;1.0&#39; encoding=&#39;utf-8&#39;?>
<xs:schema xmlns:xs=&#39;http://www.w3.org/2001/XMLSchema&#39; elementFormDefault=&#39;qualified&#39; attributeFormDefualt=&#39;unqualified&#39;>
 <xs:element name=&#39;用户列表&#39; type=&#39;userlist&#39;/>
 <xs:complexType name=&#39;userlist&#39;><!-- 使用complexType声明该类型为复合类型的元素 -->
  <xs:sequence><!-- 使用sequence说明下面的元素必须按顺序在XML文档中显示 -->
   <xs:element name=&#39;用户&#39; type=&#39;user&#39;/>
  </xs:sequence>
 </xs:complexType>
 <xs:complexType name=&#39;user&#39;>
  <xs:sequence>
   <xs:element name=&#39;用户名&#39; type=&#39;user&#39;/>
   <xs:element name=&#39;密码&#39; type=&#39;user&#39;/>
   <xs:element name=&#39;用户类型&#39; type=&#39;user&#39;/>
  </xs:sequence>
 </xs:complexType>
</xs:schema>


Listing 2 und Listing 3 definieren User.xsd. Ihre Funktionen sind die gleichen, beide dienen der Überprüfung der Legitimität von XML-Dokumenten. Die Definitionsmethoden sind jedoch unterschiedlich. In Listing 2 wird die formale Definition globaler Komponenten verwendet, während in Listing 3 die lokale formale Definition verwendet wird.

XML/HTML Code复制内容到剪贴板
<!-- 使用局部形式定义 -->
<?xml version=&#39;1.0&#39; encoding=&#39;utf-8&#39;?>
<xs:schema xmlns:xs=&#39;http://www.nishishui.org/2000/XML Schema&#39; elementFormDefault=&#39;qualified&#39; attributeFormDefualt=&#39;unqualified&#39;>
 <xs:element name=&#39;用户列表&#39;>
  <xs:complexType>
   <xs:sequence>
    <xs:element name=&#39;用户&#39;>
     <xs:complexType>
      <xs:sequence>
       <xs:element name=&#39;用户名&#39; type=&#39;xs:string&#39;/>
       <xs:element name=&#39;密码&#39; type=&#39;xs:string&#39;/>
       <xs:element name=&#39;用户类型&#39; type=&#39;xs:integer&#39;/>
      </xs:sequence>
     </xs:complexType>
    </xs:element>
   </xs:sequence>
  </xs:complexType>
 </xs:element>
</xs:schema>

2.2 Grundlegende Verwendung

  • Oben haben wir eine vergleichende Analyse von Schema und DTD hinsichtlich ihrer Funktionen und Verwendung durchgeführt. Der größte Unterschied zwischen Schema und DTD besteht darin, dass Schemadatentypen eingeführt werden und andere Elemente, wie z. B. die Deklaration von Elementen und Attributen, der DTD ähneln und im Folgenden nicht im Detail erläutert werden. Schema-Grundinhaltszuordnung:


2.2.1 Referenzsyntax

Nachdem eine Schemadatei erstellt wurde, können Sie sie zur Überprüfung verwenden die Gültigkeit eines XML-Dokuments, d. h. prüfen, ob ein XML-Dokument der Definition der Schemadatei folgt. Wie verweist ein XML-Dokument auf ein Schemadokument?

Die Referenz des Schema-Modells ähnelt eher der oben genannten Anwendungsmethode des Namespace. Die spezifischen Beispiele lauten wie folgt:



Detaillierte Einführung in Schemacode in XML (Bild)



2.2.2 Elementtyp

XML/HTML Code复制内容到剪贴板
<?xml version=&#39;1.0&#39; encoding=&#39;utf-8&#39;?>
<用户列表 xmlns:xsi=http://www.nishishui.org/2000/XMLSchema xsi:noNamespaceSchemaLocation=&#39;user.xsd&#39;><!-- 引用user.xsd -->
 <用户>
  <用户名>我是谁</用户名>
  <密码>123456</密码>
  <用户类型>1</用户类型>
 </用户>
</用户列表>
(1) Unterteilt in einfache und komplexe Elemente Je nach Inhalt werden SimpleType- bzw. ComplexType-Marker verwendet.

Einfaches Element: Der Inhalt des Elements kann nur Text sein und enthält keine anderen Elemente und Attribute.



Komplexe Elemente : Das Element enthält andere Elemente und Attribute. Es gibt vier Typen: leere Elemente, die nur andere Elemente enthalten, nur Text enthalten und Text und andere Elemente enthalten.

XML/HTML Code复制内容到剪贴板
<?xml version=&#39;1.0&#39; encoding=&#39;utf-8&#39;?>
<xs:schema xmlns:xs=&#39;http://www.nishishui.org/2000/XML Schema&#39; elementFormDefault=&#39;qualified&#39; attributeFormDefualt=&#39;unqualified&#39;>
    <xs:element name=&#39;age&#39;>
        <xs:simpleType><!-- 使用关键字simpleType声明简单元素 -->
            <!--restriction关键字结合minInclusive和maxInclusive控制了XML中元素可接受的值范围为0~100-->
            <xs:restriction base="xs:integer">
                <xs:minInclusive value=&#39;0&#39;/>
                <xs:maxInclusive value=&#39;100&#39;/>
            </xs:restriction>
        </xs:simpleType>
    </xs:element>
</xs:schema>


(2)按照定义位置可分为局部和全局元素。
全局元素:1dd643d91c792abd0a34d1b312e2f207元素的父元素必须是b7b165c079dc80a737996dfae2b9c338;
局部元素:局部元素声明只能出现在复杂类型(b04708ad431d182f917fc0425233bdde元素)定义内部。即1dd643d91c792abd0a34d1b312e2f207元素的父元素只能是6e9388779e5fc4a565f66fe84a63ec67、6352600d7af58d108c255b7cc4da5797或72b96a4fd26a14b531b12ddf122686e3元素。

XML/HTML Code复制内容到剪贴板
<?xml version=&#39;1.0&#39; encoding=&#39;utf-8&#39;?>
<xs:schema xmlns:xs=&#39;http://www.nishishui.org/2000/XML Schema&#39; elementFormDefault=&#39;qualified&#39; attributeFormDefualt=&#39;unqualified&#39;>
    <xs:element name=&#39;用户&#39; type=&#39;user&#39;/><!-- 全局元素 -->
    <xs:element name=&#39;用户名&#39; type=&#39;xs:string&#39;/><!-- 全局元素 -->
    <xs:element name=&#39;密码&#39; type=&#39;xs:string&#39;><!-- 全局元素 -->
        <xs:complexType name=&#39;user&#39;>
            <!--sequence控制XML内容中元素出现的顺序-->
            <xs:sequence>
                <!-- 定义具体的元素,这些都是简单元素-->
                <!-- 定义局部元素,使用ref关键字引用,并使用minOccurs和maxOccurs制定元素出现的最少和最多的次数-->
                <xs:element ref=&#39;用户名&#39; minOccurs=&#39;0&#39; maxOccurs=&#39;1&#39;/><!-- 局部元素-->
                <xs:element ref=&#39;密码&#39; minOccurs=&#39;0&#39; maxOccurs=&#39;1&#39;/><!-- 局部元素-->
            </xs:sequence>
        </xs:complexType>
    </xs:element>
</xs:schema>


Das obige ist der detaillierte Inhalt vonDetaillierte Einführung in Schemacode in XML (Bild). Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn