2013-05-29 1 views
0

Можно ли преобразовать пространство имен xsd в нечто другое в результате?Как создать другое «пространство имен xsd» для таблицы стилей и результата?

входное пространство имен XSL: элемент таблицы стилей выглядит следующим образом:

xmlns:xsd="http://www.w3.org/2001/XMLSchema" 

и выходное пространство имен выходного корневого элемента должен выглядеть следующим образом:

xmlns:xsd="http://www.w3.org/2001/XMLSchema#" 

Я попытался вручную asssign второй namespace к корневому элементу моего вывода, однако преобразование XSLT больше не распознает элементы с префиксом «xsd», поскольку оно, похоже, перезаписывает исходное пространство имен.

Изменение префикса и создание псевдонима также не является вариантом: также на выходе (RDF/XML) префикс элемента следует называть «xsd».

Благодарим за помощь.

EDIT:

здесь соответствующие части двух файлов:

входного файла (XSD):

<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"> 

должен стать

Output File (RDF/XML) :

<rdf:RDF xmlns:xsd="http://www.w3.org/2001/XMLSchema#"> 
+0

Если вы нашли ответ на свой вопрос, добавьте его в качестве ответа и отметьте ответ, который наилучшим образом подходит для вас, как принято (нажмите галочку). –

ответ

0

ОТВЕТ:

Это заняло у меня несколько часов, но в конце концов я понял, решение о моей:

я во-первых, пришлось исключить префикс таблицы стилей из файла результатов:

<xsl:stylesheet version="2.0" xmlns:xsd="http://www.w3.org/2001/XMLSchema" 
     exclude-result-prefixes="xsd"> 

Затем я создал новое пространство имен XSD для корневого элемента выхода:

<xsl:namespace name="xsd" select="'http://www.w3.org/2001/XMLSchema#'"/> 

В любом случае, спасибо за помощь.

1

Если вы хотите, чтобы преобразовать все элементы в пространстве имен http://www.w3.org/2001/XMLSchema быть в пространстве имен http://www.w3.org/2001/XMLSchema# затем использовать

<xsl:template match="xsd:*"> 
    <xsl:element name="{name()}" namespace="http://www.w3.org/2001/XMLSchema#"> 
    <xsl:apply-templates select="@* | node()"/> 
    </xsl:element> 
</xsl:template> 

Если это не поможет, то, пожалуйста, покажите нам образец входного XML вы имеете и соответствующий выходной сэмпл хотите создать.

+0

Спасибо за ваш ответ, я отредактировал мой вопрос, может быть, теперь более ясно –