2016-06-30 3 views
1

У меня есть файл, как: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> 

Я использую этот XSLT для преобразования его:

<?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> 
Смежные вопросы