2017-07-30 11 views
0

XMLをXSLTに変換するための名前空間プレフィックスを提供することは、広くSOでカバーされています。例えば、 XSLT Transform XML with Namespaces,XSLT with XML source that has a default namespace set to xmlns、およびXSLT Transformating XML to XML。しかし、無数の時間の研究と試行錯誤の後、私はそれを機能させることに失敗したと言えるでしょう。名前空間にあるXMLの要素を処理する

ここに私のXMLファイルです:

<?xml version="1.0" encoding="utf-8"?> 
<library xmlns="http://void.net/library/1.0"> 
    <catalog> 
     <cd id="c1"> 
      <singer id="s1"> 
       <name>Kate</name> 
       <surname>Apple</surname> 
      </singer> 
     <title>Great CD</title> 
     </cd> 
     <cd id="c2"> 
      <singer id="s2"> 
       <name>Mary</name> 
       <surname>Orange</surname> 
      </singer> 
     <title>Even better CD</title> 
     </cd> 
    </catalog> 
</library> 

これは私がこれまでに作ってみたものです:

<?xml version="1.0" encoding="UTF-8"?> 
<xsl:stylesheet version="1.0" 
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> 
    xmlns:b="http://void.net/library/1.0" 
    exclude-result-prefixes="b"> 
    <xsl:output method="text" indent="no" /> 

    <xsl:template match="/b:library"> 
     <xsl:text>singer,title 
     </xsl:text> 
     <xsl:for-each select="b:catalog/b:cd"> 
      <xsl:value-of select="concat(b:singer/b:name, ' ', b:singer/b:surname, ', ', b:title, ' 
')" /> 
     </xsl:for-each> 
    </xsl:template> 
</xsl:stylesheet> 

は、ここで私はスタイルシートでタイプミスを修正し、思いついたexample and error list

+0

何が効果がありませんか? – zx485

+0

@ zx485エラーリストについては、最新の記事をご覧ください。 – menteith

+1

スタイルシートに構文エラーがあります。 「変換」の直後に右の角括弧を削除します。 – mzjn

答えて

0

ですこれは:

<?xml version="1.0" encoding="UTF-8"?> 
<xsl:stylesheet version="1.0" 
    xmlns:xsl="http://www.w3.org/1999/XSL/Transform" 
    xmlns:b="http://void.net/library/1.0" exclude-result-prefixes="b"> 
    <xsl:output method="text" indent="no" /> 

    <xsl:template match="/b:library"> 
     <xsl:text>singer,title&#xa;</xsl:text> 
     <xsl:for-each select="b:catalog/b:cd"> 
      <xsl:value-of select="concat(b:singer/b:name, ' ', b:singer/b:surname, ', ', b:title, '&#xa;')" /> 
     </xsl:for-each> 
    </xsl:template> 
</xsl:stylesheet> 

出力:

singer,title 
Kate Apple, Great CD 
Mary Orange, Even better CD 

だから、すべてが期待通りに動作するようです。

+0

多くの、多くのありがとう! – menteith

関連する問題