1с как убрать xmlns
Здравствуйте, Vital13, Вы писали:
V>Проблема в том, что в результирующем документе, элемент <P> создается с xmlns="".
V>Как можно убрать этот атрибут?
Вопрос к знатокам XSLT.
Есть такое преобразование:
Проблема в том, что в результирующем документе, элемент <P> создается с xmlns="".
Как можно убрать этот атрибут?
Здравствуйте, Vital13, Вы писали:
Огромное спасибо! указал оба неймспейса, один по умолчанию, второй с префиксом и всё стало как надо.
Здравствуйте, <Аноним>, Вы писали:
[skipped]
Помнится, Xml2xml обсуждался в теме с очень оригинальным названием: XSLT
R>Здравствуйте, <Аноним>, Вы писали:
R>[skipped]
R>Помнится, Xml2xml обсуждался в теме с очень оригинальным названием: XSLT
Пока что опытным путем выяснил, что если срезать у корневого тега источника все служебные атрибуты, то получается чистый результат, без лишних namespace-атрибутов. Но это тоже не выход — тогда отваливается валидация по схеме.
Будут "лишние" атрибуты в результате:
Не будет "лишних" атрибутов в результате, но и валидации по схеме — тоже:
А>Как-то не оно.
[skipped]
А может просто не разобрались? Цитируйте свою трансформер с <xsl:copy-of/>, только потроха лишние уберите — посмотрим.
Здравствуйте, rsn81, Вы писали:
R>А может просто не разобрались? Цитируйте свою трансформер с <xsl:copy-of/>, только потроха лишние уберите — посмотрим.
Спасибо за помощь. Вот минимальный пример для "воспроизводства":
Рисуем по схеме источник:
Вот этим трансформируем:
И вот что в итоге:
Никак не могу разобраться, как подавить генерацию атрибутов xmlns:xsi
P.S. Всё это пробуется в XML Spy 4.3
Здравствуйте, <Аноним>, Вы писали:
[skipped]
Попробуйте так:Дело в том, что xsl:copy-of копирует поддерево полностью, в том числе с его пространствами имен. В корневом теге xsl:stylesheet можно попросить исключить вывод пространства имен посредством атрибута exclude-result-prefixes, но на xsl:copy-of даже он не влияет. В XSLT 2.0 вроде бы можно отменить копирование пространства имен в xsl:copy-of. В XSLT 1.0 вместо этого можно применить xsl:copy, как показано выше.
The xsl:copy-of element can be used to insert a result tree fragment into the result tree, without first converting it to a string as xsl:value-of does (see [7.6.1 Generating Text with xsl:value-of]). The required select attribute contains an expression. When the result of evaluating the expression is a result tree fragment, the complete fragment is copied into the result tree. When the result is a node-set, all the nodes in the set are copied in document order into the result tree; copying an element node copies the attribute nodes, namespace nodes and children of the element node as well as the element node itself; a root node is copied by copying its children. When the result is neither a node-set nor a result tree fragment, the result is converted to a string and then inserted into the result tree, as with xsl:value-of.
Здравствуйте, rsn81, Вы писали:
R>[skipped]
R>Попробуйте так:Дело в том, что xsl:copy-of копирует поддерево полностью, в том числе с его пространствами имен. В корневом теге xsl:stylesheet можно попросить исключить вывод пространства имен посредством атрибута exclude-result-prefixes, но на xsl:copy-of даже он не влияет. В XSLT 2.0 вроде бы можно отменить копирование пространства имен в xsl:copy-of. В XSLT 1.0 вместо этого можно применить xsl:copy, как показано выше.
Спасибо, это работает. Как именно — идея понятна, рекурсивно клонируем элемент и копируем все атрибуты, тем самым отфильтровывая namespace-ноды.
Попробую попутно переделать с матчинга и apply-templates на call-template — уж очень подозрительно всегда отношусь к оружию массовго поражения
Здравствуйте, <Аноним>, Вы писали:А>Попробую попутно переделать с матчинга и apply-templates на call-template — уж очень подозрительно всегда отношусь к оружию массовго поражения
Не стоит, дальновиднее использовать apply-templates. Если хотите ограничить применение шаблона только к определенным узлам, к примеру, WorldTag, просто в моем примере в шаблоне "*" замените на "WorldTag".
Здравствуйте, rsn81, Вы писали:
R>Здравствуйте, <Аноним>, Вы писали:
А>>Попробую попутно переделать с матчинга и apply-templates на call-template — уж очень подозрительно всегда отношусь к оружию массовго поражения
R>Не стоит, дальновиднее использовать apply-templates. Если хотите ограничить применение шаблона только к определенным узлам, к примеру, WorldTag, просто в моем примере в шаблоне "*" замените на "WorldTag".
В моём случае, требуется не просто копировать тег с атрибутами — нужно всё найденное под-дерево, поэтому явное задание имени тега не поможет. В конечном итоге, "станцевал" вот такой преобразователь, работает на ура
Вопрос к знатокам XSLT.
Есть такое преобразование:
Проблема в том, что в результирующем документе, элемент <P> создается с xmlns="".
Как можно убрать этот атрибут?
Здравствуйте, Vital13, Вы писали:
V>Проблема в том, что в результирующем документе, элемент <P> создается с xmlns="".
V>Как можно убрать этот атрибут?
Здравствуйте, Vital13, Вы писали:
Огромное спасибо! указал оба неймспейса, один по умолчанию, второй с префиксом и всё стало как надо.
Здравствуйте, <Аноним>, Вы писали:
[skipped]
Помнится, Xml2xml обсуждался в теме с очень оригинальным названием: XSLT
R>Здравствуйте, <Аноним>, Вы писали:
R>[skipped]
R>Помнится, Xml2xml обсуждался в теме с очень оригинальным названием: XSLT
Пока что опытным путем выяснил, что если срезать у корневого тега источника все служебные атрибуты, то получается чистый результат, без лишних namespace-атрибутов. Но это тоже не выход — тогда отваливается валидация по схеме.
Будут "лишние" атрибуты в результате:
Не будет "лишних" атрибутов в результате, но и валидации по схеме — тоже:
А>Как-то не оно.
[skipped]
А может просто не разобрались? Цитируйте свою трансформер с <xsl:copy-of/>, только потроха лишние уберите — посмотрим.
Здравствуйте, rsn81, Вы писали:
R>А может просто не разобрались? Цитируйте свою трансформер с <xsl:copy-of/>, только потроха лишние уберите — посмотрим.
Спасибо за помощь. Вот минимальный пример для "воспроизводства":
Рисуем по схеме источник:
Вот этим трансформируем:
И вот что в итоге:
Никак не могу разобраться, как подавить генерацию атрибутов xmlns:xsi
P.S. Всё это пробуется в XML Spy 4.3
Здравствуйте, <Аноним>, Вы писали:
[skipped]
Попробуйте так:Дело в том, что xsl:copy-of копирует поддерево полностью, в том числе с его пространствами имен. В корневом теге xsl:stylesheet можно попросить исключить вывод пространства имен посредством атрибута exclude-result-prefixes, но на xsl:copy-of даже он не влияет. В XSLT 2.0 вроде бы можно отменить копирование пространства имен в xsl:copy-of. В XSLT 1.0 вместо этого можно применить xsl:copy, как показано выше.
The xsl:copy-of element can be used to insert a result tree fragment into the result tree, without first converting it to a string as xsl:value-of does (see [7.6.1 Generating Text with xsl:value-of]). The required select attribute contains an expression. When the result of evaluating the expression is a result tree fragment, the complete fragment is copied into the result tree. When the result is a node-set, all the nodes in the set are copied in document order into the result tree; copying an element node copies the attribute nodes, namespace nodes and children of the element node as well as the element node itself; a root node is copied by copying its children. When the result is neither a node-set nor a result tree fragment, the result is converted to a string and then inserted into the result tree, as with xsl:value-of.
Здравствуйте, rsn81, Вы писали:
R>[skipped]
R>Попробуйте так:Дело в том, что xsl:copy-of копирует поддерево полностью, в том числе с его пространствами имен. В корневом теге xsl:stylesheet можно попросить исключить вывод пространства имен посредством атрибута exclude-result-prefixes, но на xsl:copy-of даже он не влияет. В XSLT 2.0 вроде бы можно отменить копирование пространства имен в xsl:copy-of. В XSLT 1.0 вместо этого можно применить xsl:copy, как показано выше.
Спасибо, это работает. Как именно — идея понятна, рекурсивно клонируем элемент и копируем все атрибуты, тем самым отфильтровывая namespace-ноды.
Попробую попутно переделать с матчинга и apply-templates на call-template — уж очень подозрительно всегда отношусь к оружию массовго поражения
Здравствуйте, <Аноним>, Вы писали:А>Попробую попутно переделать с матчинга и apply-templates на call-template — уж очень подозрительно всегда отношусь к оружию массовго поражения
Не стоит, дальновиднее использовать apply-templates. Если хотите ограничить применение шаблона только к определенным узлам, к примеру, WorldTag, просто в моем примере в шаблоне "*" замените на "WorldTag".
Здравствуйте, rsn81, Вы писали:
R>Здравствуйте, <Аноним>, Вы писали:
А>>Попробую попутно переделать с матчинга и apply-templates на call-template — уж очень подозрительно всегда отношусь к оружию массовго поражения
R>Не стоит, дальновиднее использовать apply-templates. Если хотите ограничить применение шаблона только к определенным узлам, к примеру, WorldTag, просто в моем примере в шаблоне "*" замените на "WorldTag".
В моём случае, требуется не просто копировать тег с атрибутами — нужно всё найденное под-дерево, поэтому явное задание имени тега не поможет. В конечном итоге, "станцевал" вот такой преобразователь, работает на ура
Вопрос к знатокам XSLT.
Есть такое преобразование:
Проблема в том, что в результирующем документе, элемент <P> создается с xmlns="".
Как можно убрать этот атрибут?
Здравствуйте, Vital13, Вы писали:
V>Проблема в том, что в результирующем документе, элемент <P> создается с xmlns="".
V>Как можно убрать этот атрибут?
Здравствуйте, Vital13, Вы писали:
Огромное спасибо! указал оба неймспейса, один по умолчанию, второй с префиксом и всё стало как надо.
Здравствуйте, <Аноним>, Вы писали:
[skipped]
Помнится, Xml2xml обсуждался в теме с очень оригинальным названием: XSLT
R>Здравствуйте, <Аноним>, Вы писали:
R>[skipped]
R>Помнится, Xml2xml обсуждался в теме с очень оригинальным названием: XSLT
Пока что опытным путем выяснил, что если срезать у корневого тега источника все служебные атрибуты, то получается чистый результат, без лишних namespace-атрибутов. Но это тоже не выход — тогда отваливается валидация по схеме.
Будут "лишние" атрибуты в результате:
Не будет "лишних" атрибутов в результате, но и валидации по схеме — тоже:
А>Как-то не оно.
[skipped]
А может просто не разобрались? Цитируйте свою трансформер с <xsl:copy-of/>, только потроха лишние уберите — посмотрим.
Здравствуйте, rsn81, Вы писали:
R>А может просто не разобрались? Цитируйте свою трансформер с <xsl:copy-of/>, только потроха лишние уберите — посмотрим.
Спасибо за помощь. Вот минимальный пример для "воспроизводства":
Рисуем по схеме источник:
Вот этим трансформируем:
И вот что в итоге:
Никак не могу разобраться, как подавить генерацию атрибутов xmlns:xsi
P.S. Всё это пробуется в XML Spy 4.3
Здравствуйте, <Аноним>, Вы писали:
[skipped]
Попробуйте так:Дело в том, что xsl:copy-of копирует поддерево полностью, в том числе с его пространствами имен. В корневом теге xsl:stylesheet можно попросить исключить вывод пространства имен посредством атрибута exclude-result-prefixes, но на xsl:copy-of даже он не влияет. В XSLT 2.0 вроде бы можно отменить копирование пространства имен в xsl:copy-of. В XSLT 1.0 вместо этого можно применить xsl:copy, как показано выше.
The xsl:copy-of element can be used to insert a result tree fragment into the result tree, without first converting it to a string as xsl:value-of does (see [7.6.1 Generating Text with xsl:value-of]). The required select attribute contains an expression. When the result of evaluating the expression is a result tree fragment, the complete fragment is copied into the result tree. When the result is a node-set, all the nodes in the set are copied in document order into the result tree; copying an element node copies the attribute nodes, namespace nodes and children of the element node as well as the element node itself; a root node is copied by copying its children. When the result is neither a node-set nor a result tree fragment, the result is converted to a string and then inserted into the result tree, as with xsl:value-of.
Здравствуйте, rsn81, Вы писали:
R>[skipped]
R>Попробуйте так:Дело в том, что xsl:copy-of копирует поддерево полностью, в том числе с его пространствами имен. В корневом теге xsl:stylesheet можно попросить исключить вывод пространства имен посредством атрибута exclude-result-prefixes, но на xsl:copy-of даже он не влияет. В XSLT 2.0 вроде бы можно отменить копирование пространства имен в xsl:copy-of. В XSLT 1.0 вместо этого можно применить xsl:copy, как показано выше.
Спасибо, это работает. Как именно — идея понятна, рекурсивно клонируем элемент и копируем все атрибуты, тем самым отфильтровывая namespace-ноды.
Попробую попутно переделать с матчинга и apply-templates на call-template — уж очень подозрительно всегда отношусь к оружию массовго поражения
Здравствуйте, <Аноним>, Вы писали:А>Попробую попутно переделать с матчинга и apply-templates на call-template — уж очень подозрительно всегда отношусь к оружию массовго поражения
Не стоит, дальновиднее использовать apply-templates. Если хотите ограничить применение шаблона только к определенным узлам, к примеру, WorldTag, просто в моем примере в шаблоне "*" замените на "WorldTag".
Здравствуйте, rsn81, Вы писали:
R>Здравствуйте, <Аноним>, Вы писали:
А>>Попробую попутно переделать с матчинга и apply-templates на call-template — уж очень подозрительно всегда отношусь к оружию массовго поражения
R>Не стоит, дальновиднее использовать apply-templates. Если хотите ограничить применение шаблона только к определенным узлам, к примеру, WorldTag, просто в моем примере в шаблоне "*" замените на "WorldTag".
В моём случае, требуется не просто копировать тег с атрибутами — нужно всё найденное под-дерево, поэтому явное задание имени тега не поможет. В конечном итоге, "станцевал" вот такой преобразователь, работает на ура
Добавляю тэг в XML через "createElement"
Как мне добавить атрибут xmlns к этому тэгу, или убрать его (он автоматом проставляет его из узла)
ОлегКДобавляю тэг в XML через "createElement"
newElem = loXA.createElement("NEW")
Как мне добавить атрибут xmlns к этому тэгу, или убрать его (он автоматом проставляет его из узла)
Ну пальцем покажи на код. не понимаю. Прочитал все, что ты указал. У каждого же есть предел понимания.
newElem = loXA.createElement("NEW")
currNode.appendChild(newElem)
currNode.childNodes.item(j-1).text = laTmp(i,j)
вот тут надо к этому элементу добавить xmlns="aaaaa"
понятно, что он по умолчанию будет xmlns="", я это и сам вижу
Ну хорошо, поскольку из твоего вопроса я "абсолютно ничего не понял", попробую нарисовать свой. и как надеюсь, "доходчивый" пример на тему Namespace в XML.
Вот код с подробными (как надеюсь) комментариями:
А вот результат его работы (файл result.xml), который я получил:
Есть надежда, что придуманный мной пример сколько-то чего-то проясняет.
Исправлено: MichaelD, 30.09.06 03:20
Просто огромнейшее спасибо, Михаил!Сделал я то что хотел. Я все понимал, что пространство имен наследуется, понимал как наследуется и документацию прочел.
Единственное, что не понимал (по примеру), что создавать элементы можно с помощью createNode. Я их создавал с помощью createElement и не понимал, почему не наследуется пространство имен (оно получалось пустым да еще указывалось это в явном виде).
. А вот насчёт "убрать xmlns" похоже, что полный облом.
Скаже во код примера:
говорит, что всё сделано, а результат "никакой" почему то.
Думаю потому, что тэгов без пространства имен не бывает. Бывает конечно пустое - но как один из видов
Оно всегда есть в явном или неявном (по вышестоящему тэгу) виде.
Пространство имен очень даже хорошо убирается (визуально), если указывать его явно при добавлении элементов с xmlns=пространство имен по умолчанию
Исправлено: ОлегК, 02.10.06 12:22
ОлегКПространство имен очень даже хорошо убирается (визуально), если указывать его явно.
Я хотел убрать так как в пример написано, т.е. вренуть назад ранее перекрытый из <root> как default-овый. А вот облом-с, однако.
Читайте также: