2016-12-15 2 views
0

Я хочу, чтобы преобразовать следующий XMLКак удалить Xmlns = "" с отображением XSLT

<IRheader> 
    <Keys> 
     <Key Type="TaxOfficeNumber">33</Key> 
     <Key Type="TaxOfficeReference">33345</Key> 
    </Keys> 
    <PeriodEnd>2017-02-28</PeriodEnd> 
    <Sender>Company</Sender> 
</IRheader> 

в

<IRheader> 
    <Keys> 
     <Key Type="TaxOfficeNumber">33</Key> 
     <Key Type="TaxOfficeReference">33345</Key> 
    </Keys> 
    <PeriodEnd>2017-02-28</PeriodEnd> 
    <IRmark Type="generic"></IRmark> 
    <Sender>Company</Sender> 
</IRheader> 

Я использую следующий код XSL для преобразования

<xsl:stylesheet version="1.0" 
    xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> 
    <xsl:output method="xml" /> 

    <xsl:template match="@*|node()" name="t1"> 
     <xsl:copy> 
      <xsl:apply-templates select="@*|node()" /> 
     </xsl:copy> 
    </xsl:template> 
    <xsl:template match="*[local-name()='PeriodEnd']"> 
     <xsl:call-template name="t1" /> 
     <xsl:element name="IRmark"> 
      <xsl:attribute name="Type"><xsl:text>generic</xsl:text></xsl:attribute> 
     </xsl:element> 
    </xsl:template> 
</xsl:stylesheet> 

После что я получаю

<IRheader> 
    <Keys> 
     <Key Type="TaxOfficeNumber">33</Key> 
     <Key Type="TaxOfficeReference">33345</Key> 
    </Keys> 
    <PeriodEnd>2017-02-28</PeriodEnd> 
    <IRmark xmlns="" Type="generic"></IRmark> 
    <Sender>Company</Sender> 
</IRheader> 

Просьба предложить, как удалить нежелательные xmlns=""

ответ

1

Если поместить элементы в нужном пространстве имен, то объявления пространств имен, как правило, заботиться о себе. Обычно эта проблема возникает, потому что родительский элемент находится в пространстве имен, но IRMark - нет. Если вы создадите IRMark в нужном пространстве имен, декларация пространства имен обычно исчезнет.

В вашем примере содержащиеся элементы не находятся в пространстве имен. Поскольку ваш пост не показывает никаких доказательств того, что вы понимаете пространства имен, мне интересно, удалили ли вы их из кода, который вы нам показали, потому что вы не понимали, что они имеют значение? Если это не так, то я не могу понять, почему отсутствует декларация xmlns="", и я хотел бы знать, какой XSLT-процессор вы используете.

Смежные вопросы