- •Лекция 6
- •XPath
- •XPath
- •XPath
- •XPath
- •XPath
- •XPath
- •XPath
- •XPath
- •XPath
- •XPath
- •XPath
- •XPath в Java
- •XPath в Java
- •XPath в Java
- •Числовые Функции
- •Строковые функции
- •Булевские функции
- •XSLT преобразования
- •Пространство имен XML
- •Пространство имен XML
- •Указание пространства имен
- •Псевдонимы пространства имен
- •Пространство имен атрибутов
- •Пространства имен
- •XSLT
- •Исходный XML документ
- •Получаемый HTML документ
- •Стили шаблонов преобразования
- •Шаблоны
- •Шаблоны
- •Шаблоны
- •Преобразование средствами Java
- •Преобразование в HTML
- •Преобразование в HTML
- •Преобразование в текст
- •Преобразование в текст
XPath
XPath: //BBB[@*]
Выбираются элементы BBB, имеющие хоть какой-нибудь атрибут
<AAA>
<BBB id="b1"/> <BBB id="b2"/> <BBB name="bbb">
</AAA>
Xpath: //BBB[not(@*)]
Выбираются элементы BBB, не имеющие ни одного атрибута
<AAA>
<BBB id="b1"/> <BBB id="b2"/>
<BBB name="bbb"> <BBB/>
</AAA>
XPath
XPath: //BBB[@id='b1']
Выбираются элементы BBB, имеющие атрибут id со значением b1
<AAA>
<BBB id="b1"/> <BBB id="b2"/>
<BBB name="bbb"> </AAA>
Xpath: //BBB@id
Выбираются атрибуты id элемента BBB
<AAA>
<BBB id="b1"/>
<BBB id="b2"/> <CCC id="bbb">
</AAA>
XPath в Java
Создание объекта XPath
XPathFactory xfactory XPathFactory.newInstance();
XPath path = xfactory.newXPath();
Обработка выражений Xpath
String username = path.evaluate("/configuration/database/username", doc);
XPath в Java
Получение набора узлов с помощью XPath
NodeList nodes = path.evaluate("/recipe/engridients", doc, XpathConstants.NODESET);
Получение узла с помощью Xpath:
Node node = path.evaluate("/recipe/instructions", doc,
XpathConstants.NODE);
XPath в Java
Получение числа с помощью Xpath:
int amount = ((Number)path.evaluate("/recipe@cooktime", doc, XpathConstants.NUMBER)).intValue;
Поиск может производиться с произвольного узла
Node node = path.evaluate("/recipe/instructions", doc, XpathConstants.NODE);
NodeList steps = path.evaluate("/step", node,XpathConstants.NODESET);
Числовые Функции
round — округляет до ближайшего целого
ceiling - округляет до ближайшего целого, которое больше данного.
floor — округляет до ближайшего целого, которое меньше данного.
count - Возвращает количество узлов.
number - Преобразует аргумент в число
sum - Возвращает сумму списка чисел.
<recipe name="хлеб" preptime="5" cooktime="180"> <title>Простой хлеб</title>
<ingredient amount="3" unit="стакан">Мука</ingredient> <ingredient amount="0.25" unit="грамм">Дрожжи</ingredient>
<ingredient amount="1.5" unit="стакан">Тёплая вода</ingredient>
<ingredient amount="1" unit="чайная ложка">Соль</ingredient> <instructions>
<step>Смешать все ингредиенты и тщательно замесить.</step>
<step>Закрыть тканью и оставить на один час в тёплом помещении.</step>
<step>Замесить ещё раз, положить на противень и поставить в духовку.</step>
</instructions>
</recipe>
Выражения:
round(recipe/ingredient[3]/@amount) — вернёт значение 2 ceiling(recipe/ingredient[3]/@amount) — вернёт значение 2 floor(recipe/ingredient[3]/@amount) — вернёт значение 1 count(recipe/ingredient) — вернет значение 4 sum(recipe/amount/@amount) — вернет значение 5.75
Строковые функции
string - Преобразует аргумент в строк
string-length - Возвращает длину строки.
substring - Возвращает подстроку.
substring-after - Возвращает остаток строки после второго аргумента.
substring-before - Возвращает часть строки перед вторым аргументом.
contains - Возвращает 'истину', если первая строка содержит вторую.
starts-with - Возвращает 'истину', если первая строка начинается второй.
concat - Возвращает конкатенацию двух строк.
normalize-space - Удаляет лишние пробелы в строке.
translate - Заменяет символы в строке.
<recipe name="хлеб" preptime="5" cooktime="180"> <title>Простой хлеб</title>
<ingredient amount="3" unit="стакан">Мука</ingredient> <ingredient amount="0.25" unit="грамм">Дрожжи</ingredient> <ingredient amount="1.5" unit="стакан">Тёплая вода</ingredient> <ingredient amount="1" unit="чайная ложка">Соль</ingredient> <instructions>
<step>Смешать все ингредиенты и тщательно замесить.</step>
<step>Закрыть тканью и оставить на один час в тёплом помещении.</step>
<step>Замесить ещё раз, положить на противень и поставить в духовку.</step>
</instructions>
</recipe>
Выражения:
string(recipe/ingredient[1]/@amount) - вернет значение '3' string-length(recipe/ingredient[1]) — вернет значение 4 substring(recipe/instructions/step[1], 1, 7) — вернет 'Смешать'
substring-after(recipe/instructions/step[1], 'оставить') — вернет ' на один час в тёплом помещении'
contains(recipe/ingredient[3], 'вода') — вернет 'истина'
concat(recipe/ingredient[1]/@amount, ' ', recipe/ingredient[1] /@unit, ' ', recipe/ingredeint[1]) — вернёт '3 стакан Мука'
translate(recipe/ingredient[3], 'ё', 'е') — вернет 'Теплая вода'
Булевские функции
boolean - Преобразует аргумент к булевому типу.
false - Вовращает 'ложь'.
true - Возвращает 'истину'.
not - Возвращает отрицание.
boolean('recipe/ingredient[1]/@amount) — вернет «истину».
not(false()) - вернет «истину» number(false()) - вернет значение 0
