powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / XML, XSL, XPath, XQuery [игнор отключен] [закрыт для гостей] / Выделение правила xPath в функцию
6 сообщений из 6, страница 1 из 1
Выделение правила xPath в функцию
    #34167260
SuSa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Добрый день всем.
Кто может помочь разрешть такую задачку:
Есть xml документ (участок) :
<?xml version="1.0" encoding="UTF-8"?>

<Office-memo>
<header xml:lang="ru"> Бла Бла</header>
<header xml:lang="en">Ля ЛЯ</header>
<header xml:lang="fr">В общем<header>

<university xml:lang="en">Полная</university>
<university xml:lang="en">Фигня!</university>
и есть другой документ, который эту фигню проверяет с помощью выражения xPath:

<sch:pattern name="Check that the value of xml:lang is correct.">
<sch:rule context="Office-memo/*">
<sch:assert
test=" (count /Office-memo/*[@xml:lang=current()/@xml:lang])=1">
2change the value of xml:lang
</sch:assert>
</sch:rule>
</sch:pattern>
что типа значение атрбута по поводу языка не должно повторяться
! Внимание Вопрос: какой вид должно принять выражение чтоб сравнивала значения атрибуттов только у одноименных тегов или
как данное выражение преобразовать в функцию, что бы затем вызывать ее в xml документе только в конкретных местах.
Нужно срочно, то знает напишите . плизззз
...
Рейтинг: 0 / 0
Выделение правила xPath в функцию
    #34168546
M0us
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А может быть лучше использовать xml-валидацию по схеме?

а в схеме создать нужные типы со списком допустимых значений.
...
Рейтинг: 0 / 0
Выделение правила xPath в функцию
    #34168628
SuSa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Добрый вечер, вы писали:
>>А может быть лучше использовать xml-валидацию по схеме?
>>а в схеме создать нужные типы со списком допустимых значений.
Приведенный пример xml документа и так строится и проверяется по схеме и в ней уже включено ограничение на языки "ru,en, fr" теперь же нужна проверка на не повторение строк с одноименными тегами и одинаковыми атрибутами, в случии если имена тегов разные а значения атрибутов одинаковые ошибки выдоваться не должно.
Есть альтернативный вариант выделить это выражение в отдельную функцию и в качестве параметра передовать имя тега (тоесть функция будет работать только для конкретного тега).
На данный момент меня клинит и написать такую функцию я почемуто не могу, вот и прошу помощи.
...
Рейтинг: 0 / 0
Выделение правила xPath в функцию
    #34170135
maXmo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
попробуй ключ описать в схеме
...
Рейтинг: 0 / 0
Выделение правила xPath в функцию
    #34170364
SuSa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Была такая идея. Теперь строка выглядит так
<header xml:lang="en" id='1'>The university</header>
<header xml:lang="en" id='1'>The university</header>
<univer xml:lang="en" id='2'>The university 2</header>
к примеру. Теперь выражение должно иметь следующий смысл
к примеру
"если значение атрибута xml:lang ='en' и current()/@xml:lang= 'en' и значение id='1' и current/@id='1' тогда выдовать ошибку
елси же значение атрибута xml:lang ='en' и current()/@xml:lang= 'en' и значение id='1' и current/@id='2' тогда не выдовать"
Вопрос как будет выглядеть выражение ?
...
Рейтинг: 0 / 0
Выделение правила xPath в функцию
    #34206419
SuSa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Найдено решение!! Спасибо гениальным идеям и золотым рукам Marusy!!!
выглядет так:
<sch:schema xmlns:sch="http://purl.oclc.org/dsdl/schematron">
<sch:pattern id="Time" abstract="true">
<sch:rule context="$e">
<sch:assert test="count($e[@xml:lang=current()/@xml:lang])=1"> change <name/> value
</sch:assert>
</sch:rule>
</sch:pattern>
<sch:pattern name="proHeader" is-a="Time">
<sch:param formal="e" actual="//header"/>
</sch:pattern>

<sch:pattern name="proUniversity" is-a="Time">
<sch:param formal="e" actual="//university"/>
</sch:pattern>

</sch:schema>
...
Рейтинг: 0 / 0
6 сообщений из 6, страница 1 из 1
Форумы / XML, XSL, XPath, XQuery [игнор отключен] [закрыт для гостей] / Выделение правила xPath в функцию
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]