2013-06-24 3 views
2
<?xml version="1.0"?> 
<c:configuration xmlns:c="urn:schemas-med-sadfens-com:config" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="urn:schemas-med-sadfens-com:config D:\config.xsd"> 
<c:component c:name="FC1PLAZACS1-DEV [Central Server]" c:keywords="Server" c:helpriid="11f7b87d-52ae-434b-8ace-4ffb4ecbe080"> 
     <c:propertyelement c:name="System manufacturer" c:value="select Manufacturer from Win32_ComputerSystem" c:type="Wmi" xmlns:c="urn:schemas-med-siemens-com:config" /> 
     <c:propertyelement c:name="System model" c:value="select Model from Win32_ComputerSystem" c:type="Wmi" xmlns:c="urn:schemas-med-siemens-com:config"/> 
</c:component> 
</c:configuration> 

В приведенном выше XML я хочу, чтобы все, как это, но мой XSL не копируя егоXSLT не копируя Xmlns в моем XML

т.е. не в состоянии скопировать элемент Xmlns: с = "урна : схемы-мед-сименс-ком: конфигурации»из

<c:propertyelement c:name="System manufacturer" c:value="select Manufacturer from Win32_ComputerSystem" c:type="Wmi" xmlns:c="urn:schemas-med-siemens-com:config" /> 

Пожалуйста найти мой Xsl

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:c="urn:schemas-med-siemens-com:config" > 

    <xsl:template match="@* | node()"> 
    <xsl:copy> 
     <xsl:apply-templates select="@* | node()"/> 
    </xsl:copy> 
    </xsl:template> 

</xsl:stylesheet> 

пожалуйста, дайте мне знать ответ, как только U люди могут

+3

Что XSLT процессор вы используете? Я только что протестировал это с помощью 'xsltproc', и он _does_ правильно копирует объявления пространства имен. –

+0

Я могу скопировать его с помощью Saxon6.5.5 –

ответ

0

я использую что-то похожее на следующее перенести узлы в новое пространство имен, YMMV:

<xsl:stylesheet 
    version="1.0" 
    xmlns:xsl="http://www.w3.org/1999/XSL/Transform" 
    xmlns:c="urn:schemas-med-siemens-com:config" > 
    <xsl:param 
    name="new-ns" 
    select="'http://my.new.ns'" 
    /> 

    <xsl:template match="@*|node()"> 
    <xsl:copy> 
     <xsl:apply-templates select="@*|node()"/> 
    </xsl:copy> 
    </xsl:template> 

    <xsl:template match="*"> 
    <xsl:element name="{local-name()}" namespace="{$new-ns}"> 
     <xsl:apply-templates select="node()|@*"/> 
    </xsl:element> 
    </xsl:template> 
</xsl:stylesheet> 
Смежные вопросы