2016-10-01 4 views
0

ノードから複数のテキスト値を避ける方法。私は、私のコードが正常に動作しているロジックを書いています。予想される出力ごとに結果を得ていますが、期待される出力に対して何か別の方法がありますか?ノードから複数のテキスト値を避ける方法

入力:

<?xml version="1.0" encoding="UTF-8"?> 
<Customer> 
<name> 
<Id>1AZlzxIAD 001AZlzxIyyy</Id> 
<phone>1</phone> 
</name> 
<name> 
<Id>1AZlzxIAD 001AZlzxIyyy 001AZl</Id> 
<phone>8</phone> 
</name> 
<name> 
<Id>0zyIAD</Id> 
<phone>3</phone> 
</name> 
<name> 
<Id>IAT</Id> 
<phone>5</phone> 
</name> 
<name> 
<Id>zXIAT</Id> 
<phone>9</phone> 
</name> 

コード:

 <xsl:template match="/"> 
     <Customer> 
      <xsl:for-each select="Customer/name"> 
       <xsl:if test="not(contains(Id, ' '))"> 
        <xsl:copy-of select="."/> 
       </xsl:if> 
      </xsl:for-each> 
     </Customer> 
    </xsl:template> 
    <xsl:template match="@* | node()"> 
     <xsl:copy> 
      <xsl:apply-templates select="@* | node()"/> 
     </xsl:copy> 
    </xsl:template> 

予想される出力:あなたがして、あなたの現在の<xsl:template match="/">...</xsl:template>を置き換えることができ

<?xml version="1.0" encoding="UTF-8"?> 
<Customer> 
<name> 
    <Id>0zyIAD</Id> 
    <phone>3</phone> 
</name> 
<name> 
    <Id>IAT</Id> 
    <phone>5</phone> 
</name> 
<name> 
    <Id>zXIAT</Id> 
    <phone>9</phone> 
</name> 
</Customer> 

答えて

0

<xsl:template match="name[contains(Id, ' ')]"/> 
関連する問題