質問: 名前空間を使用したxslt変換xml いくつか[〜#〜] xml [〜#〜]を[〜#〜に変換しようとしています。 ] html [〜#〜][〜#〜] xslt [〜#〜]を使用します。問題:私はそれを動作させることができません。誰かが私が間違っていることを教えてもらえますか?xml:<arrayofbrokerage xmlns:i="http://www.w3.org/2001/xmlschema-instance" xmlns="http://www.test.com/"> <brokerage> <brokerageid>91</brokerageid> <lastyodleeupdate>0001-01-01t00:00:00</lastyodleeupdate> <name>e*trade</name> <validation i:nil="true" /> <username>personaltradingtesting</username> </brokerage> </arrayofbrokerage> xslt:<xsl:stylesheet version="1.0" xmlns="http://www.test.com/" xmlns:xsl="http://www.w3.org/1999/xsl/transform" xmlns:xsi="http://www.w3.org/2001/xmlschema-instance" xmlns:xslformatting="urn:xslformatting"> <xsl:output method="html" indent="no"/> <xsl:template match="/arrayofbrokerage"> <xsl:for-each select="brokerage"> test </xsl:for-each> </xsl:template> </xsl:stylesheet>
回答: 変換する要素のxsltに名前空間プレフィックスを指定する必要があります。何らかの理由(少なくともjava jaxpパーサー)では、単にデフォルトの名前空間を宣言することはできません。<xsl:stylesheet version="1.0" xmlns:t="http://www.test.com/" xmlns:xsl="http://www.w3.org/1999/xsl/transform" xmlns:xsi="http://www.w3.org/2001/xmlschema-instance" xmlns:xslformatting="urn:xslformatting"> <xsl:output method="html" indent="no"/> <xsl:template match="/t:arrayofbrokerage"> <xsl:for-each select="t:brokerage"> test </xsl:for-each> </xsl:template> </xsl:stylesheet> これにより、xmlドキュメントの名前空間にあるすべてのものがキャッチされます。