| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > XML, XSL > как создать аттрибут xmlns: с помошью xslt |
| Автор: lankin 28.10.2009, 11:53 | ||||||
Нужно создать вот такую строку:
где myNS - мой нэмспэйс, который я буду использовать внутри RSS, расширяя его. щас пока вот что есть:
Результат:
Как видите, щас нэмспэйс прописывается каждый раз внутри элемента myNS:, а мне нужно, чтобы он был прописан один раз как атрибут корневого элемента RSS: <rss version="2.0" xmlns:myNS:"http://......."> Как? |
| Автор: diadiavova 28.10.2009, 19:46 |
| Это управляется атрибутом exclude-result-prefixes в корневом элементе XSLT. Включённые в его значение прификсы ведут себя так как ты описываешь, а те, которых там нет декларируются в корневом элементе(как тебе надо). Дефолтное поведение видмо от XSLT-процессора зависит. Попробуй объявить этот атрибут с пустым значением. |
| Автор: NiТR0 29.10.2010, 14:44 | ||||||
| Не знаю как у lankinа, а у меня не сработало. Позволю себе немного расширить тему. Тема избитая, но есть один важный ньюанс: в исходном XML нет namespaces. Их не надо их вытаскивать из исходного XML, только создать новые namespaces в выходном XML. Помогите пожалуйста решить задачу. Второй день мучаюсь. Исходный XML Note: Обратите внимание, что никаких namespaces нет
На выходе должен быть такой XML
XSLT
В документации сказано: Example: Namespaces are not Attributes It is not an error to write: <xsl:attribute name="xmlns:xsl" namespace="file://some.namespace"> http://www.w3.org/1999/XSL/Transform </xsl:attribute> However, this will not result in the namespace declaration xmlns:xsl="http://www.w3.org/1999/XSL/Transform" being output. Instead, it will produce an attribute node with local name xsl, and with a system-allocated namespace prefix mapped to the namespace URI file://some.namespace. This is because the namespace fixup process is not allowed to use xmlns as the name of a namespace node. Но не сказано как добавить namespaces типа xmlns:xsi и xsi:schemaLocation. |
| Автор: diadiavova 29.10.2010, 15:45 |
| NiТR0, декларации пространств имен добавляются автоматически, если в документе присутствуют элементы, относящиеся к этим пространствам. Тебе надо объявить эти пространства в XSLT-документе и формировать нужные элементы придерживаясь тех префиксов, которые объявлены в XSLT. Остальное - задача хсл-процессора. |
| Автор: NiТR0 29.10.2010, 15:49 | ||
Да, вы правы.
Большое спасибо |
| Автор: magelan 29.10.2010, 17:20 | ||
| NiТR0, будет время погуглите:
|