2017-09-07 19 views
0

さらに処理するために入力XML全体を文字列にコピーしようとしていますが、変数をコピーする前に特定のノード(プランコード)からテキストを削除する必要があります。私はこの使用して、XSLTを達成することができます方法を知っているかもしれ入力XML内のノードからテキストを削除する

入力XML:

<CallMember> 
    <PlanD> 
     <abcpr>you</abcpr> 
     <Desd>Protection</Desd> 
     <plancode>76789</plancode> 
     <plaDesc>goody</plaDesc> 
    </PlanD> 
    <fType>ONLINE</fType> 
</CallMember> 

XSLT私がしようとしています:

<?xml version="1.0" encoding="iso-8859-1"?> 

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:xalan="http://xml.apache.org/xslt" xmlns:func="http://exslt.org/functions" xmlns:dp="http://www.datapower.com/extensions" xmlns:regexp="http://exslt.org/regular-expressions" xmlns:tglfn="http://test.com/tgl" xmlns:date="http://exslt.org/dates-and-times" exclude-result-prefixes="#all" extension-element-prefixes="dp regexp"> 

    <xsl:output method="xml" encoding="UTF-8" indent="yes" omit-xml-declaration="no"/> 
    <xsl:template match="/"> 

      <xsl:variable name="InputRequest"> 
       <xsl:copy-of select="."/>     
      </xsl:variable> 

      <xsl:variable name="modifiedRequest"> 
       <xsl:copy-of select="."/> 
       <plancode></plancode> 
      </xsl:variable> 
</xsl:template> 

私はmodifiedRequest変数に期待していた出力:

<CallMember> 
    <PlanD> 
     <abcpr>you</abcpr> 
     <Desd>Protection</Desd> 
     <plancode></plancode> <!-- this value needs to get emptied --> 
     <plaDesc>goody</plaDesc> 
    </PlanD> 
    <fType>ONLINE</fType> 
</CallMember> 

答えて

1

それに(ほぼ)空のフィルタリングのためのテンプレートとapply-templatesとの組み合わせでアイデンティティテンプレートを使用します。

<?xml version="1.0" encoding="iso-8859-1"?> 
<xsl:stylesheet version="1.0" 
    xmlns:xsl="http://www.w3.org/1999/XSL/Transform" 
    xmlns:xalan="http://xml.apache.org/xslt" 
    xmlns:func="http://exslt.org/functions" 
    xmlns:dp="http://www.datapower.com/extensions" 
    xmlns:regexp="http://exslt.org/regular-expressions" 
    xmlns:tglfn="http://test.com/tgl" 
    xmlns:date="http://exslt.org/dates-and-times" 
    exclude-result-prefixes="#all" extension-element-prefixes="dp regexp">  
    <xsl:output method="xml" encoding="UTF-8" indent="yes" omit-xml-declaration="no"/> 

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

    <xsl:template match="/"> 

     <xsl:variable name="InputRequest"> 
      <xsl:copy-of select="."/> 
     </xsl:variable> 

     <!-- copies subtree except matching empty template --> 
     <xsl:variable name="modifiedRequest"> 
      <xsl:copy> 
      <xsl:apply-templates select="node()|@*" /> 
      </xsl:copy> 
     </xsl:variable> 

    </xsl:template> 

    <!-- (nearly) empty template copies only element without content --> 
    <xsl:template match="plancode"> 
     <xsl:copy /> 
    </xsl:template> 
</xsl:stylesheet> 
+0

は、それが魅力のように働いた、ありがとうございました!! – sarma

関連する問題