アプリ版:「スタンプのみでお礼する」機能のリリースについて

いつも勉強させていただいております。
今回は質問をさせていただけないでしょうか。

XSLTで下記のように記述します。
<xsl:value-of select="."/>

カレントが、DtPDataListの場合は
項目や内容などの、階層下の全てのテキストが出てしまいます。

<DtPDataList>■ここだけ出したい■
<DtDataTitle>
<DtTitleVal>項目</DtTitleVal>
<DtTitleVal>内容</DtTitleVal>
</DtDataTitle>
</DtPDataList>

そこで、■ここだけ出したい■の部分だけ出すにはどのように記述すれば良いでしょうか?

A 回答 (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>
    • good
    • 0

その DtPDataList を出す為のtemplate


<xsl:apply-templates />
(または select=".")
で呼び出してない?

もしそうだとすると DtPDataList の処理が終わった後に下層の要素も再帰的に実行をしようとして適用templateが無くて文字列が返ってくるっていうオチなんじゃないかな
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!