2016-06-30 9 views
1

私のようなファイルがあります:私はそれを変換するために、このXSLTを使用しのXSLT removnig結果プレフィックス

<?xml version='1.0' encoding='UTF-8'?> 
<wd:Report_Data xmlns:wd="urn:com.workday.report/Business_Process_Transactions_-_Canceled__Rescinded_or_Corrected"> 
    <wd:Report_Entry> 
     <wd:Worker wd:Descriptor="**** *****"> 
      <wd:ID wd:type="WID">2b994449ed3b10ba7bc5d65f971ba4d4</wd:ID> 
      <wd:ID wd:type="Employee_ID">00083646</wd:ID> 
     </wd:Worker> 
    </wd:Report_Entry> 
</wd:Report_Data> 

<?xml version="1.0" encoding="UTF-8"?> 
<xsl:stylesheet version="2.0" 
       xmlns:xsl="http://www.w3.org/1999/XSL/Transform"    
     xmlns:wd="urn:com.workday.report/Business_Process_Transactions_-_Canceled__Rescinded_or_Corrected" 
        exclude-result-prefixes="wd"> 

     <xsl:output method="xml" indent="yes" omit-xml-declaration="yes"/> 


     <xsl:template match ="/"> 
      <xsl:apply-templates select="wd:Report_Data/wd:Report_Entry/wd:Worker[@wd:Descriptor!='']" /> 
     </xsl:template> 


     <xsl:template match="wd:Report_Data/wd:Report_Entry/wd:Worker[@wd:Descriptor!='']"> 
      <wd:Instance_Reference> 
       <wd:ID> 
        <xsl:attribute name="wd:type"> 
         <xsl:value-of select="wd:ID[@wd:type='Contingent_Worker_ID' or @wd:type='Employee_ID']/@wd:type"/> 
        </xsl:attribute> 

        <xsl:value-of select="wd:ID[@wd:type='Contingent_Worker_ID' or @wd:type='Employee_ID']"></xsl:value-of> 
       </wd:ID> 
      </wd:Instance_Reference> 
     </xsl:template> 

    </xsl:stylesheet> 

それは私を与える:

<wd:Instance_Reference xmlns:wd="urn:com.workday.report/Business_Process_Transactions_-_Canceled__Rescinded_or_Corrected"> 
    <wd:ID wd:type="Employee_ID">00083646</wd:ID> 
</wd:Instance_Reference> 

私がしたいのこの要素を削除してください:

xmlns:wd = "ur n:com.workday.report/Business_Process_Transactions _-_ Canceled__Rescinded_or_Corrected "

+0

これは要素ではなく、名前空間宣言です。削除する場合は、 'wd:'接頭辞も削除する必要があります。名前空間にバインドせずにプレフィックスを使用することはできません。 –

答えて

1

名前空間宣言のないプレフィックスはありません。 しかし、あなたの名前空間を削除して、このような出力が残されている場合...

<Instance_Reference> 
    <ID type="Employee_ID">00083646</ID> 
</Instance_Reference> 

は、あなたが必要なすべての接頭辞を除外せずに出力要素を作成することです。あなたの例では、最後のtemplaをこれに変更してください。

<xsl:template match="wd:Report_Data/wd:Report_Entry/wd:Worker[@wd:Descriptor!='']"> 
     <Instance_Reference> 
      <ID> 
       <xsl:attribute name="type"> 
        <xsl:value-of select="wd:ID[@wd:type='Contingent_Worker_ID' or @wd:type='Employee_ID']/@wd:type"/> 
       </xsl:attribute> 

       <xsl:value-of select="wd:ID[@wd:type='Contingent_Worker_ID' or @wd:type='Employee_ID']"></xsl:value-of> 
      </ID> 
     </Instance_Reference> 
    </xsl:template> 
関連する問題