2017-01-18 2 views
0

Мой вход XML, как показано ниже:Добавление атрибута и значение XML с помощью XSLT

<?xml version="1.0" encoding="UTF-8"?> 
<PQ> 
    <PQGetClaimAttachment> 
     <USERID>XXX</USERID> 
     <PASSWORD>XXX</PASSWORD> 
     <hostAddress>XXX</hostAddress> 
     <businessArea>CS2XAA</businessArea> 
     <sourceType>2XSRCTYP</sourceType> 
     <operator>GT</operator> 
     <lookupDate>2015-01-01T00.00.00.000000+05:30</lookupDate> 
    </PQGetClaimAttachment> 
</PQ> 

Я хочу, чтобы преобразовать выше XML на рисунке ниже, используя XSLT:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?> 
<lookupInstances xmlns="http://www.tech.com/awd/rest/v1" name="XYZ"> 
    <lookupParameters> 
    <lookupParameter name="businessArea">CS2XAA</lookupParameter> 
    <lookupParameter name="type">2XSRCTYP</lookupParameter> 
    <lookupParameter name="OPER">GT</lookupParameter> 
    <lookupParameter name="LDAT">2015-01-01T00.00.00.000000+05:30</lookupParameter> 
    </lookupParameters> 
</lookupInstances> 

Я используя следующий XSLT, но это не дает мне желаемый выходной XML.

<?xml version="1.0" encoding="UTF-8"?> 
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="2.0"> 

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

    <xsl:template match="/"> 
      <lookupInstances xmlns="http://www.tech.com/awd/rest/v1" 
       name="XYZ"> 
       <lookupParameters> 
        <lookupParameter businessArea="{//businessArea}" /> 
        <lookupParameter type="{//sourceType}" /> 
        <lookupParameter OPER="{//operator}" /> 
        <lookupParameter LDAT="{//lookupDate}" /> 
       </lookupParameters> 
      </lookupInstances> 
    </xsl:template> 

</xsl:stylesheet> 

Может кто-нибудь, пожалуйста, дайте мне знать, где я делаю ошибку?

ответ

1

Если вы хотите, чтобы на выходе были атрибуты name="businessArea", нет смысла давать им атрибуты businessArea="".

Это должно делать то, что вам нужно:

<?xml version="1.0" encoding="UTF-8"?> 
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="2.0"> 

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

    <xsl:template match="/"> 
      <lookupInstances xmlns="http://www.tech.com/awd/rest/v1" 
       name="XYZ"> 
       <lookupParameters> 
        <lookupParameter name="businessArea"> 
         <xsl:value-of select="PQ/PQGetClaimAttachment/businessArea" /> 
        </lookupParameter> 
        <lookupParameter name="type"> 
         <xsl:value-of select="PQ/PQGetClaimAttachment/sourceType" /> 
        </lookupParameter> 
        <lookupParameter name="OPER"> 
         <xsl:value-of select="PQ/PQGetClaimAttachment/operator" /> 
        </lookupParameter> 
        <lookupParameter name="LDAT"> 
         <xsl:value-of select="PQ/PQGetClaimAttachment/lookupDate" /> 
        </lookupParameter> 
       </lookupParameters> 
      </lookupInstances> 
    </xsl:template> 

</xsl:stylesheet> 
+0

Это идеальный .. !! +1 для быстрого ответа. –