|
|
|
Выделение правила xPath в функцию
|
|||
|---|---|---|---|
|
#18+
Добрый день всем. Кто может помочь разрешть такую задачку: Есть 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 документе только в конкретных местах. Нужно срочно, то знает напишите . плизззз ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.11.2006, 13:58 |
|
||
|
Выделение правила xPath в функцию
|
|||
|---|---|---|---|
|
#18+
А может быть лучше использовать xml-валидацию по схеме? а в схеме создать нужные типы со списком допустимых значений. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.11.2006, 18:37 |
|
||
|
Выделение правила xPath в функцию
|
|||
|---|---|---|---|
|
#18+
Добрый вечер, вы писали: >>А может быть лучше использовать xml-валидацию по схеме? >>а в схеме создать нужные типы со списком допустимых значений. Приведенный пример xml документа и так строится и проверяется по схеме и в ней уже включено ограничение на языки "ru,en, fr" теперь же нужна проверка на не повторение строк с одноименными тегами и одинаковыми атрибутами, в случии если имена тегов разные а значения атрибутов одинаковые ошибки выдоваться не должно. Есть альтернативный вариант выделить это выражение в отдельную функцию и в качестве параметра передовать имя тега (тоесть функция будет работать только для конкретного тега). На данный момент меня клинит и написать такую функцию я почемуто не могу, вот и прошу помощи. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.11.2006, 19:03 |
|
||
|
Выделение правила xPath в функцию
|
|||
|---|---|---|---|
|
#18+
попробуй ключ описать в схеме ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.12.2006, 12:54 |
|
||
|
Выделение правила xPath в функцию
|
|||
|---|---|---|---|
|
#18+
Была такая идея. Теперь строка выглядит так <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' тогда не выдовать" Вопрос как будет выглядеть выражение ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.12.2006, 13:41 |
|
||
|
Выделение правила xPath в функцию
|
|||
|---|---|---|---|
|
#18+
Найдено решение!! Спасибо гениальным идеям и золотым рукам 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> ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.12.2006, 09:49 |
|
||
|
|

start [/forum/topic.php?fid=14&gotonew=1&tid=1334542]: |
0ms |
get settings: |
8ms |
get forum list: |
11ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
146ms |
get topic data: |
6ms |
get first new msg: |
4ms |
get forum data: |
1ms |
get page messages: |
26ms |
get tp. blocked users: |
1ms |
| others: | 233ms |
| total: | 440ms |

| 0 / 0 |
