Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
197
Добавлен:
17.04.2018
Размер:
333.31 Кб
Скачать

ИП. XML. XML-схема. Ссылка ref

МИЭТ, 2017

Ссылка ref позволяет ссылаться из определений одних элементов и атрибутов на определения других элементов и атрибутов

<!-- определение атрибутов -->

<xs:attribute name="width" type="xs:integer"/> <xs:attribute name="height" type="xs:integer"/> <xs:attribute name="href" type="xs:string"/>

<!-- определение составных элементов -->

<xs:element name="img">

<xs:complexType> <xs:attribute ref="width"/> <xs:attribute ref="height"/> <xs:attribute ref="href"/>

</xs:complexType>

</xs:element>

ИП. XML. XML-схема. Ссылка ref

МИЭТ, 2017

Пример ссылки на элементы

<xs:element name="project">

<xs:complexType>

<xs:sequence> <xs:element ref="title"/>

<xs:element ref="authors"/>

<xs:element ref="img" minOccurs="0" maxOccurs="1"/> <xs:element ref="vuz"/>

<xs:element ref="annotation"/> </xs:sequence>

<xs:attribute ref="id" use="required"/> <xs:attribute ref="year" use="required"/>

</xs:complexType>

</xs:element>

<xs:element name="projects"> <xs:complexType>

<xs:sequence>

<xs:element ref="project" minOccurs="0" maxOccurs="unbounded"/> </xs:sequence>

</xs:complexType>

</xs:element>

ИП. XML. XML-схема. Пример XML-документа и его схемы

МИЭТ, 2017

<?xml version="1.0" encoding="UTF-8"?>

<projects xmlns:miet="http://www.w3.org/2001/XMLSchema-instance" miet:schemaLocation="portfolio.xsd">

<project id="000001" year="2017">

<title>Мобильное приложение “Student Assistant”</title> <authors>

<author country="RU">Янис Василиадис</author> </authors>

<img width="185" height="46" href="https://miet.ru/bitrix/templates/.default/img/miee_logo2.png"/> <vuz>МИЭТ</vuz>

<annotation>

Портал(доска) объявлений которая позволяет осуществлять информирование студентов и конечно главным плюсом является то, что информация надежно хранится и доступна откуда угодно(в отличии от “обычных” досок объявлений). К примеру, вакансии различных компаний,

</annotation>

</project>

<?xml version="1.0" encoding="UTF-8" ?>

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

<!-- определение простых элементов --> <xs:element name="title" type="xs:string"/> <xs:element name="vuz" type="xs:string"/> <xs:element name="annotation" type="xs:string"/>

<!-- определение атрибутов -->

<xs:attribute name="country" type="xs:string"/> <xs:attribute name="width" type="xs:integer"/> <xs:attribute name="height" type="xs:integer"/> <xs:attribute name="href" type="xs:string"/> <xs:attribute name="id" type="xs:string"/>

<xs:attribute name="year" type="xs:integer" default="2017"/>

ИП. Работа с XML

МИЭТ, 2017

PHP

libxml simplexml

-основная библиотека (включена по умолчанию)

-более простая и легкая библиотека

JavaScript

XMLHttpRequest

JQuery

Java

-объект браузера для работы с XML (включен)

-распространенная универсальная библиотека

Пакеты:

 

javax.xml.parsers.*

- создание (загрузка) и парсинг (разбор)

org.w3c.dom.*

- перемещение по DOM документа

org.xml.sax.SAXException

- генерация событий при чтении документа

ИП. Работа с XML. PHP. Валидация

МИЭТ, 2017

Проверка по DTD

<?

$dom = new DOMDocument;

$dom->Load('portfolio.xml'); if (!$dom->validate()) {

echo "Документ содержит ошибки валидации!\n"; } else {

//Действия с документом

}

?>

Проверка по XML-схеме

<?

$dom = new DOMDocument;

$dom->Load('portfolio.xml');

if (!$dom->schemaValidate('portfolio.xsd')) {

echo '<b>DOMDocument::schemaValidate() Generated Errors!</b>';

}

?>

ИП. Работа с XML. PHP.

МИЭТ, 2017

Пример вывода всех элементов и атрибутов

$dom = new DOMDocument; $dom->Load('portfolio.xml');

if (!$dom->schemaValidate('portfolio.xsd')) {

print '<b>DOMDocument::schemaValidate() Generated Errors!</b>';

}

$elems = $dom->getElementsByTagName('project');

foreach ($elems as $temp) {

echo "<br><b>".$temp->tagName." | "; echo $temp->getAttribute('id')." | "; echo $temp->getAttribute('year')."</b>";

foreach ($temp->childNodes as $cnd) {

echo "<br>".$cnd->nodeName." / ".$cnd->nodeValue;

}

}

ИП. Работа с XML. JavaScript

МИЭТ, 2017

После загрузки XML-документа для работы с ним можно использовать методы обхода DOM объекта document: getElementByTagName(...) и т.д.

url = "http://miet.ru/portfolio.xml";

xml=new window.XMLHttpRequest(); xml.open("GET", url, false); parse_xml = xml.responseXML;

var projects=parse_xml.getElementsByTagName("project"); if(projects) {

for(var i=0; i<projects.length; i++) { prohect=projects[i];

// операции над текущим проектом

}

}

ИП. Работа с XML. Java

МИЭТ, 2017

// Создается "построитель" документа

DocumentBuilder documentBuilder = DocumentBuilderFactory.newInstance().newDocumentBuilder(); // Создается дерево DOM документа из файла

Document document = documentBuilder.parse("src/javatest/portfolio.xml"); // Получаем корневой элемент

Node root = document.getDocumentElement(); System.out.println("List of projects:\n");

// Просматриваем все подэлементы корневого - т.е. проекты NodeList projects = root.getChildNodes();

for (int i = 0; i < projects.getLength(); i++) { Node project = projects.item(i);

// Если нода не текст, то это проект - заходим внутрь if (project.getNodeType() != Node.TEXT_NODE) {

NodeList projectProps = project.getChildNodes(); for(int j = 0; j < projectProps.getLength(); j++) {

Node projectProp = projectProps.item(j);

// Если нода не текст, то это один из параметров проекта - печатаем if (projectProp.getNodeType() != Node.TEXT_NODE) {

System.out.println(projectProp.getNodeName()+"\n!"+projectProp.getTextContent().trim()+"\n\n");

}

}

System.out.println("===========>>>>");

}

}

}catch (ParserConfigurationException ex) { ex.printStackTrace(System.out);

}catch (SAXException ex) { ex.printStackTrace(System.out);

}catch (IOException ex) { ex.printStackTrace(System.out);

}

Соседние файлы в папке Интернет технологии