質問 |
||
| QNo.4071969 | XSLTで直下のテキストのみ取得する方法は? | |
|---|---|---|
| 質問者:yuka_102 |
いつも勉強させていただいております。 今回は質問をさせていただけないでしょうか。 XSLTで下記のように記述します。 <xsl:value-of select="."/> カレントが、DtPDataListの場合は 項目や内容などの、階層下の全てのテキストが出てしまいます。 <DtPDataList>■ここだけ出したい■ <DtDataTitle> <DtTitleVal>項目</DtTitleVal> <DtTitleVal>内容</DtTitleVal> </DtDataTitle> </DtPDataList> そこで、■ここだけ出したい■の部分だけ出すにはどのように記述すれば良いでしょうか? |
|
困り度:
|
||
| 質問投稿日時: 08/06/03 13:20 |
||
回答 |
|
| ANo.2 | <?xml version="1.0" encoding="UTF-8"?> <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> <xsl:template match="/DtPDataList"> <hoge><xsl:value-of select="text()" /></hoge> <!-- http://www.w3.org/TR/xpath#location-paths child::text() selects all text node children of the context node ちなみに,このコードだと, DtDataTitle要素のpreceding-siblingなtext nodeだけじゃなく DtDataTitle要素のfollowing-siblingなtext nodeも含まれるので もし,preceding-siblingなtextが欲しい場合は preceding-sibling::text()でもtext()[1]でもお好きなように。 gooの仕様でURIっぽい文字列の前後にZERO WIDTH SPACEが埋め込まれるので多分このXSLTは整形式として認識されないから 理解して自分で書き直すか,テキストエディタで弄ってから使ってください #どうでもいいが,XPathが 1 orginなのにはどうしても慣れんな --> </xsl:template> </xsl:stylesheet> |
|---|---|
| 回答者:himajin100000 | |
| 種類:アドバイス どんな人:一般人 自信:参考意見 |
|
| 回答日時: 08/06/03 15:49 |
|
| |
| この回答へのお礼 | この回答にお礼をつける(質問者のみ) |
回答 |
|
| ANo.1 | その DtPDataList を出す為のtemplate <xsl:apply-templates /> (または select=".") で呼び出してない? もしそうだとすると DtPDataList の処理が終わった後に下層の要素も再帰的に実行をしようとして適用templateが無くて文字列が返ってくるっていうオチなんじゃないかな |
|---|---|
| 回答者:SAYKA | |
| 種類:アドバイス どんな人:一般人 自信:参考意見 |
|
| 回答日時: 08/06/03 15:29 |
|
| |
| この回答へのお礼 | この回答にお礼をつける(質問者のみ) |