|
仕事の備忘録的な事ですが、他にも同じことで方法を模索している方がいれば参考にしていただければ・・・
名前空間付きのXML文書 例えば、以下 <?xml version="1.0" encoding="UTF-8"?> <RICH_MEDIA xmlns:cc="http://www.xyz.com/xyz/common_component"> <TEXT>AAA</TEXT> <cc:TEXT>XXX</cc:TEXT> </RICH_MEDIA> てなのがあった場合、 これを以下のXSLで変換すると、 <?xml version="1.0" encoding="UTF-8"?> <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:fo="http://www.w3.org/1999/XSL/Format" xmlns:cc="http://www.xyz.com/xyz/common_component"> <xsl:output encoding="UTF-8" omit-xml-declaration="yes" /> <xsl:template match="/RICH_MEDIA"> <test_result> <xsl:value-of select="cc:TEXT"/> </test_result> </xsl:template> </xsl:stylesheet> 以下のようになるのですが、 <test_result xmlns:cc="http://www.xyz.com/xyz/common_component" xmlns:fo="http://www.w3.org/1999/XSL/Format">XXX</test_result> できれば、すっきりと、名前空間のプリフィクスを消したい場合があります。 その場合、必要なことは、<xsl:stylesheet の宣言部分に、exclude-result-prefixes="xxx" を追加してやれば良いのです。 xxxの部分は、名前空間のプリフィクスが列挙できます。 たとえば、上記の場合、cc と fo をスペースで区切り書けば、 xmlns:cc="http://www.xyz.com/xyz/common_component" xmlns:fo="http://www.w3.org/1999/XSL/Format" が、変換結果のOUTPUTに付加されなくなります。 <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:fo="http://www.w3.org/1999/XSL/Format" xmlns:cc="http://www.xyz.com/xyz/common_component" exclude-result-prefixes="cc fo"> 結果: <test_result>XXX</test_result> デフォルトの名前空間が表示されてしまう場合は、デフォルトの名前空間が#defaultで定義されてますので、例えば、以下の様にすると良いでしょう。 <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:fo="http://www.w3.org/1999/XSL/Format" xmlns:cc="http://www.xyz.com/xyz/common_component" exclude-result-prefixes="#default cc fo"> 以外と簡単に名前空間って消せるんですね。 |

- >
- コンピュータとインターネット
- >
- コンピュータ
- >
- ソフトウェア




