Что такое xml

Введение в XML¶

XML ( англ. eXtensible Markup Language) — расширяемый язык разметки,
предназначенный для хранения и передачи данных.

Простейший XML-документ выглядит следующим образом:

<?xml version="1.0" encoding="windows-1251"?>
<book category="WEB">
   <title lang="en">Learning XML</title>
   <author>Erik T. Ray</author>
   <year>2003</year>
   <price></price>
</book>

Первая строка — это XML декларация. Здесь определяется версия XML (1.0) и кодировка файла. На следующей строке описывается корневой элемент документа (открывающий тег). Следующие 4 строки описывают дочерние элементы корневого элемента ( , , , ). Последняя строка определяет конец корневого элемента (закрывающий тег).

Документ XML состоит из элементов (elements). Элемент начинается открывающим тегом (start-tag) в угловых скобках, затем идет содержимое (content) элемента, после него записывается закрывающий тег (end-teg) в угловых скобках.

Информация, заключенная между тегами, называется содержимым или значением элемента: . Т.е. элемент принимает значение . Элементы могут вообще не принимать значения.

Элементы могут содержать атрибуты, так, например, открывающий тег имеет атрибут , который принимает значение . Значения атрибутов заключаются в кавычки (двойные или ординарные).

Некоторые элементы, не содержащие значений, допустимо записывать без закрывающего тега. В таком случае символ ставится в конце открывающего тега:

Referencing Schema

Take a look at the following Referencing Schema −

<?xml version = "1.0"?>

<class xmlns = "http://www.tutorialspoint.com"
   xmlns:xsi = "http://www.w3.org/2001/XMLSchema-instance"
   xsi:schemaLocation = "http://www.tutorialspoint.com student.xsd">  
   
   <student rollno = "393">    
      <firstname>Dinkar</firstname>
      <lastname>Kad</lastname>
      <nickname>Dinkar</nickname>
      <marks>85</marks>
   </student>
   
   <student rollno = "493">	 
      <firstname>Vaneet</firstname>
      <lastname>Gupta</lastname>
      <nickname>Vinni</nickname>
      <marks>95</marks>
   </student>
   
   <student rollno = "593">    
      <firstname>Jasvir</firstname>
      <lastname>Singh</lastname>
      <nickname>Jazz</nickname>
      <marks>90</marks>
   </student>
</class>
xmlns = "http://www.tutorialspoint.com"

The above fragment specifies default namespace declaration. This namespace is used by the schema validator check that all the elements are part of this namespace. It is optional.

xmlns:xsi = "http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation = "http://www.tutorialspoint.com student.xsd">  

After defining the XMLSchema-instance xsi, use schemaLocation attribute. This attribute has two values, namespace and location of XML Schema, to be used separated by a space. It is optional.

students.xml

<?xml version = "1.0"?>

<class>  
   <student rollno = "393">
      <firstname>Dinkar</firstname>    
      <lastname>Kad</lastname>
      <nickname>Dinkar</nickname>
      <marks>85</marks>	 
   </student>
   
   <student rollno = "493">	 
      <firstname>Vaneet</firstname>
      <lastname>Gupta</lastname>
      <nickname>Vinni</nickname>
      <marks>95</marks>
   </student>
   
   <student rollno = "593">    
      <firstname>Jasvir</firstname>
      <lastname>Singh</lastname>
      <nickname>Jazz</nickname>
      <marks>90</marks>
   </student>
</class>

students.xsd

<?xml version = "1.0"?>

<xs:schema xmlns:xs = "http://www.w3.org/2001/XMLSchema">
   <xs:element name = 'class'>
      <xs:complexType>
         <xs:sequence>
             <xs:element name = 'student' type = 'StudentType' minOccurs = '0' 
                maxOccurs = 'unbounded' />
         </xs:sequence>
      </xs:complexType>
   </xs:element>

   <xs:complexType name = "StudentType">
      <xs:sequence>
         <xs:element name = "firstname" type = "xs:string"/>
         <xs:element name = "lastname" type = "xs:string"/>
         <xs:element name = "nickname" type = "xs:string"/>
         <xs:element name = "marks" type = "xs:positiveInteger"/>
      </xs:sequence>
      <xs:attribute name = 'rollno' type = 'xs:positiveInteger'/>
   </xs:complexType>			 
</xs:schema>

XSDValidator.java

import java.io.File;
import java.io.IOException;

import javax.xml.XMLConstants;
import javax.xml.transform.stream.StreamSource;

import javax.xml.validation.Schema;
import javax.xml.validation.SchemaFactory;
import javax.xml.validation.Validator;

import org.xml.sax.SAXException;

public class XSDValidator {
   public static void main(String[] args) {
      if(args.length !=2){
         System.out.println("Usage : XSDValidator <file-name.xsd> <file-name.xml>" );
      } else {
         boolean isValid = validateXMLSchema(args,args);
         
         if(isValid){
            System.out.println(args + " is valid against " + args);
         } else {
            System.out.println(args + " is not valid against " + args);
         }
      }
   }
   
   public static boolean validateXMLSchema(String xsdPath, String xmlPath){
      try {
         SchemaFactory factory =
            SchemaFactory.newInstance(XMLConstants.W3C_XML_SCHEMA_NS_URI);
            Schema schema = factory.newSchema(new File(xsdPath));
            Validator validator = schema.newValidator();
            validator.validate(new StreamSource(new File(xmlPath)));
      } catch (IOException e){
         System.out.println("Exception: "+e.getMessage());
         return false;
      } catch(SAXException e1){
         System.out.println("SAX Exception: "+e1.getMessage());
         return false;
      }
		
      return true;
   }
}

Using Named Types

The third design method defines classes or types, that enables us to reuse element
definitions. This is done by naming the simpleTypes and complexTypes elements,
and then point to them through the type attribute of the element.

Here is the third design of the schema file («shiporder.xsd»):

<?xml version=»1.0″ encoding=»UTF-8″ ?>
<xs:schema xmlns:xs=»http://www.w3.org/2001/XMLSchema»>
<xs:simpleType name=»stringtype»>
 
<xs:restriction base=»xs:string»/>
</xs:simpleType>
<xs:simpleType name=»inttype»>
 
<xs:restriction base=»xs:positiveInteger»/>
</xs:simpleType>
<xs:simpleType name=»dectype»>
 
<xs:restriction base=»xs:decimal»/>
</xs:simpleType>
<xs:simpleType name=»orderidtype»>
 
<xs:restriction base=»xs:string»>
   
<xs:pattern value=»{6}»/>
 
</xs:restriction>
</xs:simpleType>
<xs:complexType name=»shiptotype»>
 
<xs:sequence>
   
<xs:element name=»name» type=»stringtype»/>
   
<xs:element name=»address» type=»stringtype»/>
   
<xs:element name=»city» type=»stringtype»/>
   
<xs:element name=»country» type=»stringtype»/>
 
</xs:sequence>
</xs:complexType>
<xs:complexType name=»itemtype»>
 
<xs:sequence>
   
<xs:element name=»title» type=»stringtype»/>
   
<xs:element name=»note» type=»stringtype» minOccurs=»0″/>
   
<xs:element name=»quantity» type=»inttype»/>
   
<xs:element name=»price» type=»dectype»/>
 
</xs:sequence>
</xs:complexType>
<xs:complexType name=»shipordertype»>
 
<xs:sequence>
   
<xs:element name=»orderperson» type=»stringtype»/>
   
<xs:element name=»shipto» type=»shiptotype»/>
   
<xs:element name=»item» maxOccurs=»unbounded» type=»itemtype»/>
 
</xs:sequence>
 
<xs:attribute name=»orderid» type=»orderidtype» use=»required»/>
</xs:complexType>
<xs:element name=»shiporder» type=»shipordertype»/>
</xs:schema>

The restriction element indicates that the datatype is derived from a W3C XML
Schema namespace datatype. So, the following fragment means that the value of
the element or attribute must be a string value:

<xs:restriction base=»xs:string»>

The restriction element is more often used to apply restrictions to elements.
Look at the following lines from the schema above:

<xs:simpleType name=»orderidtype»>
 
<xs:restriction base=»xs:string»>
   
<xs:pattern value=»{6}»/>
 
</xs:restriction>
</xs:simpleType>

This indicates that the value of the element or attribute must be a string, it must be exactly six characters in a row, and those characters must be a
number from 0 to 9.

❮ Previous
Next ❯

Создание XML-схемы

Теперь мы хотим создать схему для документа XML выше.

Мы начнем с открытия нового файла , который мы будем называть «shiporder.xsd» . Для того, чтобы создать схему мы могли бы просто следовать структуре в документе XML и определите каждый элемент, как мы находим его. Мы начнем со стандартной декларации XML с последующим хз: элемент схемы, который определяет схему:

<?xml version=»1.0″ encoding=»UTF-8″ ?>
<xs:schema xmlns:xs=»http://www.w3.org/2001/XMLSchema»>…
</xs:schema>

В схеме выше мы используем стандартные пространства имен (xs) , и URI , связанный с этим пространством имен является определение языка схемы, который имеет стандартное значение http://www.w3.org/2001/XMLSchema.

Далее, мы должны определить «shiporder» элемент. Этот элемент имеет атрибут и содержит другие элементы, поэтому мы рассматриваем его как сложный тип. Дочерние элементы «shiporder» элемент окружен хз: элемент последовательности , которая определяет упорядоченную последовательность субэлементов:

<xs:element name=»shiporder»>
 
<xs:complexType>
   
<xs:sequence>
     

   
</xs:sequence>
 
</xs:complexType>
</xs:element>

Затем мы должны определить «orderperson» элемент в качестве простого типа (так как она не содержит каких — либо атрибутов или других элементов). В типа (xs:string) с префиксом префикс пространства имен , связанного с XML — схемы , которая указывает заранее определенный тип данных схемы:

<xs:element name=»orderperson» type=»xs:string»/>

Далее, мы должны определить два элемента , которые имеют сложного типа: «shipto» и «item» . Мы начнем с определения «shipto» элемент:

<xs:element name=»shipto»>
 
<xs:complexType>
   
<xs:sequence>
     
<xs:element name=»name» type=»xs:string»/>
     
<xs:element name=»address» type=»xs:string»/>
     
<xs:element name=»city» type=»xs:string»/>
     
<xs:element name=»country» type=»xs:string»/>
   
</xs:sequence>
 
</xs:complexType>
</xs:element>

С помощью схем, которые мы можем определить количество возможных появлений для элемента с MaxOccurs и атрибутами MinOccurs. MaxOccurs определяет максимальное число вхождений для элемента и MinOccurs определяет минимальное число вхождений для элемента. Значение по умолчанию для обоих MaxOccurs и MinOccurs 1!

Теперь мы можем определить «item» элемент. Этот элемент может появляться несколько раз внутри «shiporder» элемента. Это определяется установкой maxOccurs атрибут «item» элемента «unbounded» , что означает , что там может быть много вхождений «item» элемент , как автор хочет

Обратите внимание на то, что «note» элемент не является обязательным. Мы определили это, установив minOccurs атрибут к нулю:

<xs:element name=»item» maxOccurs=»unbounded»>
 
<xs:complexType>
   
<xs:sequence>
     
<xs:element name=»title» type=»xs:string»/>
     
<xs:element name=»note» type=»xs:string» minOccurs=»0″/>
     
<xs:element name=»quantity» type=»xs:positiveInteger»/>
     
<xs:element name=»price» type=»xs:decimal»/>
   
</xs:sequence>
 
</xs:complexType>
</xs:element>

Теперь мы можем объявить атрибут «shiporder» элемента. Поскольку это обязательный атрибут мы указываем использование = «требуется».

Note: Заявления атрибутов всегда должны прийти в последний раз :

<xs:attribute name=»orderid» type=»xs:string» use=»required»/>

Вот полный список файла схемы под названием «shiporder.xsd» :

<?xml version=»1.0″ encoding=»UTF-8″ ?>
<xs:schema xmlns:xs=»http://www.w3.org/2001/XMLSchema»>
<xs:element name=»shiporder»>
 
<xs:complexType>
   
<xs:sequence>
     
<xs:element name=»orderperson» type=»xs:string»/>
     
<xs:element name=»shipto»>
       
<xs:complexType>
         
<xs:sequence>
           
<xs:element name=»name» type=»xs:string»/>
           
<xs:element name=»address» type=»xs:string»/>
           
<xs:element name=»city» type=»xs:string»/>
           
<xs:element name=»country» type=»xs:string»/>
         
</xs:sequence>
       
</xs:complexType>
     
</xs:element>
     
<xs:element name=»item» maxOccurs=»unbounded»>
       
<xs:complexType>
         
<xs:sequence>
           
<xs:element name=»title» type=»xs:string»/>
           
<xs:element name=»note» type=»xs:string» minOccurs=»0″/>
           
<xs:element name=»quantity» type=»xs:positiveInteger»/>
           
<xs:element name=»price» type=»xs:decimal»/>
         
</xs:sequence>
       
</xs:complexType>
     
</xs:element>
   
</xs:sequence>
   
<xs:attribute name=»orderid» type=»xs:string» use=»required»/>
 
</xs:complexType>
</xs:element>
</xs:schema>

Element

Schema is the root element of XSD and it is always required.

<xs:schema xmlns:xs = "http://www.w3.org/2001/XMLSchema">
targetNamespace = "http://www.tutorialspoint.com"

The above fragment specifies that elements used in this schema are defined in http://www.tutorialspoint.com namespace. It is optional.

xmlns = "http://www.tutorialspoint.com"

The above fragment specifies that default namespace is http://www.tutorialspoint.com.

elementFormDefault = "qualified"

The above fragment indicates that any elements declared in this schema must be namespace qualified before using them in any XML Document.It is optional.

Использование именованных типов

Способ третий дизайн определяет классы или типы, что позволяет повторно использовать определения элементов. Это делается путем именования элементов simpleTypes и complexTypes, а затем указать на них через type атрибута элемента.

Вот уже третий дизайн файла схемы («shiporder.xsd») :

<?xml version=»1.0″ encoding=»UTF-8″ ?>
<xs:schema xmlns:xs=»http://www.w3.org/2001/XMLSchema»>
<xs:simpleType name=»stringtype»>
 
<xs:restriction base=»xs:string»/>
</xs:simpleType>
<xs:simpleType name=»inttype»>
 
<xs:restriction base=»xs:positiveInteger»/>
</xs:simpleType>
<xs:simpleType name=»dectype»>
 
<xs:restriction base=»xs:decimal»/>
</xs:simpleType>
<xs:simpleType name=»orderidtype»>
 
<xs:restriction base=»xs:string»>
   
<xs:pattern value=»{6}»/>
 
</xs:restriction>
</xs:simpleType>
<xs:complexType name=»shiptotype»>
 
<xs:sequence>
   
<xs:element name=»name» type=»stringtype»/>
   
<xs:element name=»address» type=»stringtype»/>
   
<xs:element name=»city» type=»stringtype»/>
   
<xs:element name=»country» type=»stringtype»/>
 
</xs:sequence>
</xs:complexType>
<xs:complexType name=»itemtype»>
 
<xs:sequence>
   
<xs:element name=»title» type=»stringtype»/>
   
<xs:element name=»note» type=»stringtype» minOccurs=»0″/>
   
<xs:element name=»quantity» type=»inttype»/>
   
<xs:element name=»price» type=»dectype»/>
 
</xs:sequence>
</xs:complexType>
<xs:complexType name=»shipordertype»>
 
<xs:sequence>
   
<xs:element name=»orderperson» type=»stringtype»/>
   
<xs:element name=»shipto» type=»shiptotype»/>
   
<xs:element name=»item» maxOccurs=»unbounded» type=»itemtype»/>
 
</xs:sequence>
 
<xs:attribute name=»orderid» type=»orderidtype» use=»required»/>
</xs:complexType>
<xs:element name=»shiporder» type=»shipordertype»/>
</xs:schema>

Элемент ограничение указывает на то, что тип данных был получен из пространства имен типа данных XML-схемы W3C. Таким образом, следующий фрагмент означает, что значение элемента или атрибута должно быть значение строки:

<xs:restriction base=»xs:string»>

Элемент ограничение чаще используется, чтобы применить ограничения к элементам. Посмотрите на следующие строки из приведенной выше схеме:

<xs:simpleType name=»orderidtype»>
 
<xs:restriction base=»xs:string»>
   
<xs:pattern value=»{6}»/>
 
</xs:restriction>
</xs:simpleType>

Это указывает на то, что значение элемента или атрибута должно быть строкой, оно должно быть ровно шесть символов в строке, и эти символы должны быть числом от 0 до 9.

❮ Предыдущая Следующая Глава ❯

Divide the Schema

The previous design method is very simple, but can be difficult to read and maintain when documents are complex.

The next design method is based on defining all elements and attributes first, and then referring to them using the ref attribute.

Here is the new design of the schema file («shiporder.xsd»):

<?xml version=»1.0″ encoding=»UTF-8″ ?>
<xs:schema xmlns:xs=»http://www.w3.org/2001/XMLSchema»>
<!— definition of simple elements —>
<xs:element name=»orderperson» type=»xs:string»/>
<xs:element name=»name» type=»xs:string»/>
<xs:element name=»address» type=»xs:string»/>
<xs:element name=»city» type=»xs:string»/>
<xs:element name=»country» type=»xs:string»/>
<xs:element name=»title» type=»xs:string»/>
<xs:element name=»note» type=»xs:string»/>
<xs:element name=»quantity» type=»xs:positiveInteger»/>
<xs:element name=»price» type=»xs:decimal»/>
<!— definition of attributes —>
<xs:attribute name=»orderid» type=»xs:string»/>
<!— definition of complex elements —>
<xs:element name=»shipto»>
 
<xs:complexType>
   
<xs:sequence>
     
<xs:element ref=»name»/>
     
<xs:element ref=»address»/>
     
<xs:element ref=»city»/>
     
<xs:element ref=»country»/>
   
</xs:sequence>
 
</xs:complexType>
</xs:element>
<xs:element name=»item»>
 
<xs:complexType>
   
<xs:sequence>
     
<xs:element ref=»title»/>
     
<xs:element ref=»note» minOccurs=»0″/>
     
<xs:element ref=»quantity»/>
     
<xs:element ref=»price»/>
   
</xs:sequence>
 
</xs:complexType>
</xs:element>
<xs:element name=»shiporder»>
 
<xs:complexType>
   
<xs:sequence>
     
<xs:element ref=»orderperson»/>
     
<xs:element ref=»shipto»/>
     
<xs:element ref=»item» maxOccurs=»unbounded»/>
   
</xs:sequence>
   
<xs:attribute ref=»orderid» use=»required»/>
 
</xs:complexType>
</xs:element>
</xs:schema>

Устранение неполадок

Частые проблемы с открытием XSD

Отсутствует Microsoft Visual Studio

При двойном щелчке XSD-файла может появиться диалоговое окно операционной системы с сообщением о том, что он «Не удается открыть этот тип файла». Обычно это означает, что Microsoft Visual Studio не установлен в %%os%%. Это не позволит вам дважды щелкнуть, чтобы открыть XSD-файл, потому что ОС не знает, как его обрабатывать.

Совет: Если вам извстна другая программа, которая может открыть файл XSD, вы можете попробовать открыть данный файл, выбрав это приложение из списка возможных программ.

Устаревший Microsoft Visual Studio

Файл XML Schema Definition несовместим с Microsoft Visual Studio, поскольку возможно, установлена неправильная версия. Вам нужно будет загрузить более новую версию Microsoft Visual Studio, если у вас нет правильной версии. Основной причиной этой проблемы является то, что файл XML Schema Definition был создан другой (более новой) версией Microsoft Visual Studio, чем установленная.

Совет . Иногда вы можете получить подсказки о правильной версии программы, щелкнув правой кнопкой мыши XSD-файл, выбрав «Свойства» и посмотрев информацию о версии.

В первую очередь проблемы, возникающие при открытии XSD-файлов, связаны с тем, что на вашем компьютере установлена неправильная версия Microsoft Visual Studio.

Предполагая, что у вас установлена правильная версия Microsoft Visual Studio, другие проблемы могут помешать вам открывать XSD-файлы. Могут возникнуть и другие проблемы — не связанные с программным обеспечением — мешающие вам открывать XSD-файлы. Другие причины, способствующие этому:

Резюме файла XSD

Эти файлы XSD можно просматривать с помощью пять существующего (-их) прикладных (-ого) программных (-ого) средств (-а), как правило, Microsoft Visual Studio, разработанного Microsoft Corporation. Оно связано с один основным (-и) типом (-ами) файла (-ов), но часто встречается в формате XML Schema Definition.
Большинство файлов XSD относится к Developer Files.

Просматривать файлы XSD можно с помощью операционных систем Windows, Mac и Linux. Они обычно находятся на настольных компьютерах (и ряде мобильных устройств) и позволяют просматривать и иногда редактировать эти файлы.

Рейтинг популярности данных файлов составляет «Низкий» и они обычно не используются.

An XML Document

Let’s have a look at this XML document called «shiporder.xml»:

<?xml version=»1.0″ encoding=»UTF-8″?>
<shiporder orderid=»889923″
xmlns:xsi=»http://www.w3.org/2001/XMLSchema-instance»
xsi:noNamespaceSchemaLocation=»shiporder.xsd»>
 
<orderperson>John Smith</orderperson>
 
<shipto>
   
<name>Ola Nordmann</name>
   
<address>Langgt 23</address>
   
<city>4000 Stavanger</city>
   
<country>Norway</country>
 
</shipto>
 
<item>
   
<title>Empire Burlesque</title>
   
<note>Special Edition</note>
   
<quantity>1</quantity>
   
<price>10.90</price>
 
</item>
 
<item>
   
<title>Hide your heart</title>
   
<quantity>1</quantity>
   
<price>9.90</price>
 
</item>
</shiporder>

The XML document above consists of a root element, «shiporder»,
that contains a required attribute called «orderid». The «shiporder» element contains three
different child elements: «orderperson», «shipto» and «item». The «item» element
appears twice, and it contains a «title», an optional «note» element, a «quantity», and a «price»
element.

The line above: xmlns:xsi=»http://www.w3.org/2001/XMLSchema-instance» tells the XML parser that this document should be validated against a schema.
The line: xsi:noNamespaceSchemaLocation=»shiporder.xsd» specifies WHERE the schema resides (here it is in the same folder as «shiporder.xml»).

Кодировки¶

И еще один важный момент, который стоит рассмотреть — кодировки. Существует множество кодировок, о них подробнее можно прочитать в статье Набор
символов.

Самыми распространенными кириллическими кодировками являются и . Последняя является одним из стандартов, но большая часть ФНС отчетности имеет кодировку .

В XML файле кодировка объявляется в декларации:

<?xml version="1.0" encoding="windows-1251"?>

Часто можно столкнуться с ситуацией, когда текстовый редаткор некорректно распознает кодировку и отображает кракозябры. В такой случае, необходимо выбрать кодировку вручную, для этого выполните:

Таблица I.3 — Смена кодировки в разных программах
Программа Кодировка
Notepad++ «Документ → Кодировка»
Geany «Документ → Установить кодировку»
Firefox «Вид → Кодировка»
Chrome «Настройка → Дополнительные инструменты → Кодировка»

Verify the output

You’ll see the following result −

students.xml is valid against students.xsd

XSD — Simple Types

In this chapter, we’ll see Simple Types that XSD defines.

S.No. Simple Type & Description
1

Simple Element can contain only text. It can not contain any other element.

2

Attribute is itself a type and is used in Complex Element.

3

Restriction defines the acceptable values of an XML element.

XSD — Complex Types

Complex Element is an XML element which can contain other elements and/or attributes. We can create a complex element in two ways −

  • Define a complex type and then create an element using the type attribute

  • Define a complex type directly by naming

Define a Complex Type and then create an element using type attribute.

<xs:complexType name = "StudentType">
   <xs:sequence>
      <xs:element name = "firstname" type = "xs:string"/>
      <xs:element name = "lastname" type = "xs:string"/>
      <xs:element name = "nickname" type = "xs:string"/>
      <xs:element name = "marks" type = "xs:positiveInteger"/>
   </xs:sequence>
   <xs:attribute name = 'rollno' type = 'xs:positiveInteger'/>
</xs:complexType>

<xs:element name = 'student' type = 'StudentType' />			 

Define a Complex Type directly by naming.

<xs:element name = "student">
   <xs:complexType>   
      <xs:sequence>
         <xs:element name = "firstname" type = "xs:string"/>
         <xs:element name = "lastname" type = "xs:string"/>
         <xs:element name = "nickname" type = "xs:string"/>
         <xs:element name = "marks" type = "xs:positiveInteger"/>
      </xs:sequence>
   <xs:attribute name = 'rollno' type = 'xs:positiveInteger'/>
   </xs:complexType>
<xs:element>

Following is the list of Complex Types that XSD supports.

S.No. Simple Type & Description
1

Complex Empty complex type element can only have attributes but no contents.

2

Elements-Only complex type element can only contain elements

3

Text-Only complex type element can only contain attribute and text.

4

Mixed complex type element can contain element, attribute and text.

5

Indicators controls the ways how elements are to be organized in an XML document.

6

The <any> element is used for elements which are not defined by schema

7

The <anyAttribute> attribute is used for attribute which are not defined by schema.

String data types are used to represent characters in the XML documents.

Syntax

The basic syntax of a XSD is as follows −

<?xml version = "1.0"?>

<xs:schema xmlns:xs = "http://www.w3.org/2001/XMLSchema">
   targetNamespace = "http://www.tutorialspoint.com"
   xmlns = "http://www.tutorialspoint.com" elementFormDefault = "qualified">
   
   <xs:element name = 'class'>
      <xs:complexType>
         <xs:sequence>
            <xs:element name = 'student' type = 'StudentType' minOccurs = '0' 
               maxOccurs = 'unbounded' />
         </xs:sequence>
      </xs:complexType>
   </xs:element>

   <xs:complexType name = "StudentType">
      <xs:sequence>
         <xs:element name = "firstname" type = "xs:string"/>
         <xs:element name = "lastname" type = "xs:string"/>
         <xs:element name = "nickname" type = "xs:string"/>
         <xs:element name = "marks" type = "xs:positiveInteger"/>
      </xs:sequence>
      <xs:attribute name = 'rollno' type = 'xs:positiveInteger'/>
   </xs:complexType>
   
</xs:schema>

Разновидности XSD-файлов

Основная принадлежность в формате XSD

.XSD

Форматирование: .xsd
Группа: XML Schema Definition

Расширение XSD Файл формат файла, который в основном используется для файлов, которые содержат данные описания схемы XML. XML-схемы обеспечивают средства для определения структуры, содержания и семантики XML документов, а также позволяет машинам выполнять правила, сделанные людьми. В XSD файлы используются в качестве замены для Document Type Definition файлов (.dtd).

Программист: Unknown Developer
Дивизион: Файлы разработчика
Ключ реестра: HKEY_CLASSES_ROOT\.xsd

Программные обеспечения, открывающие XML Schema Definition:

Microsoft Visual Studio, разработчик — Microsoft Corporation

Windows

Oxygen XML Editor 19, разработчик — Syncro Soft

Windows
Mac
Linux

Liquid Technologies Liquid XML Studio, разработчик — Liquid Technologies

Windows

Microsoft Office Open XML File Format Converter, разработчик — Microsoft Corporation

Mac

Microsoft XML Notepad, разработчик — Microsoft Corporation

Windows

Поиск информации в XML файлах (XPath)¶

XPath ( англ. XML Path Language) — язык запросов к элементам
XML-документа. XPath расширяет возможности работы с XML.

XML имеет древовидную структуру. В документе всегда имеется корневой
элемент (инструкция к дереву отношения не имеет).
У элемента дерева всегда существуют потомки и предки, кроме корневого
элемента, у которого предков нет, а также тупиковых элементов (листьев
дерева), у которых нет потомков. Каждый элемент дерева находится на
определенном уровне вложенности (далее — «уровень»). У элементов на
одном уровне бывают предыдущие и следующие элементы.

Это очень похоже на организацию каталогов в файловой системе, и строки
XPath, фактически, — пути к «файлам» — элементам. Рассмотрим пример
списка книг:

<?xml version="1.0" encoding="windows-1251"?>
<bookstore>
   <book category="COOKING">
     <title lang="it">Everyday Italian</title>
     <author>Giada De Laurentiis</author>
     <year>2005</year>
     <price>30.00</price>
   </book>
   <book category="CHILDREN">
     <title lang="en">Harry Potter</title>
     <author>J K. Rowling</author>
     <year>2005</year>
     <price>29.99</price>
   </book>
   <book category="WEB">
     <title lang="en">Learning XML</title>
     <author>Erik T. Ray</author>
     <year>2003</year>
     <price>39.95</price>
   </book>
</bookstore>

XPath запрос вернет следующий результат:

<price>30.00</price>
<price>29.99</price>
<price>39.95</price>

Сокращенная форма этого запроса выглядит так: .

С помощью XPath запросов можно искать информацию по атрибутам. Например,
можно найти информацию о книге на итальянском языке: вернет .

Чтобы получить больше информации, необходимо модифицировать запрос вернет:

<book category="COOKING">
     <title lang="it">Everyday Italian</title>
     <author>Giada De Laurentiis</author>
     <year>2005</year>
     <price>30.00</price>
   </book>

В приведенной ниже таблице представлены некоторые выражения XPath и
результат их работы:

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Adblock
detector