Я хотел бы нормализовать входной файл XSD, чтобы поместить xs:
перед любыми элементами XSD без xs:
, добавленного с помощью XQuery.
copy $c:=doc("test.xsd")
modify
(
if($c/schema)
then
(
for $item in $c//*
where substring($item/text(), 1, 3) != "xs:"
return rename node $item as concat("xs:", $item/text())
)
else ()
)
return $c
Выполнение этого xqy на входном XSD без префикса xs:
возвращает входной файл без изменений. Я обновляю $c
и возвращаю его. Так что же не так?
входной файл:
<?xml version="1.0"?>
<schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
<element name="note" type="xs:string"/>
</schema>
ожидаемый результат:
<?xml version="1.0"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name="note" type="xs:string"/>
</xs:schema>
PS: Кажется, мой вопрос вызывает недоумение. Мне нужно присутствие xs:
, потому что у меня есть другая программа обработки текста, которая обрабатывает только элементы с префиксом xs:
.
text()
не имеют никакого смысла. - person Charles Duffy   schedule 15.01.2017http://www.w3.org/2001/XMLSchema
. - person Charles Duffy   schedule 15.01.2017http://www.w3.org/2001/XMLSchema
, вам не понадобятся префиксыxs:
для всего. - person Charles Duffy   schedule 15.01.2017http://www.w3.org/2001/XMLSchema
, а не о том, попало ли оно туда черезxmlns:ns="http://www.w3.org/2001/XMLSchema"
и парный префиксxs:
в элементе, или совершенно другим именем префикса, указывающим на одно и то же пространство имен, или набором пространств имен по умолчанию, как сxmlns="http://www.w3.org/2001/XMLSchema"
; и если он не соответствует, возможно, вам не следует использовать его для XML). - person Charles Duffy   schedule 17.01.2017