- - PR -
すべての要素に文字列長の属性を加えたい
1
投稿者 | 投稿内容 |
---|---|
|
投稿日時: 2004-10-12 00:08
はじめまして。初心者ですが、よろしくお願いいたします。
下記XMLデータのすべての要素に文字列長の情報として属性"length"を加えたXMLに変換したいのですが、どのようなXSLTを記述すればよいのでしょうか? <list> <data> <name>東京太郎<name> <kana>トウキョウタロウ</kana> </data> <data> <name>大阪次郎<name> <kana>オオサカジロウ</kana> </data> </list> 結果的に以下のようにしたいということです。 <list> <data> <name length="4">東京太郎<name> <kana length="8">トウキョウタロウ</kana> </data> <data> <name length="4">大阪次郎<name> <kana length="7">オオサカジロウ</kana> </data> </list> よろしくお願いいたします。 [ メッセージ編集済み 編集者: ノブイチ 編集日時 2004-10-12 00:10 ] |
|
投稿日時: 2004-10-12 09:02
文字列長の定義によります
半角1全角2は XSLTパズルに なってしまいます。 XPath 関数 があります http://www.infoteria.com/jp/contents/xml-data/REC-xpath-19991116-jpn.htm#function-string-length |
|
投稿日時: 2004-10-12 12:05
「すべての要素に」と仰ってますが,<list>要素や<data>要素には属性を附加しないわけですね。
こうなります。術語はこれ以外にもいくつか考えられます。 <?xml version="1.0" encoding="UTF-8"?> <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> <xsl:template match="*[child::text()]"> <xsl:copy> <xsl:attribute name="lenght"> <xsl:value-of select="string-length()"/> </xsl:attribute> <xsl:apply-templates/> </xsl:copy> </xsl:template> <xsl:template match="*"> <xsl:copy> <xsl:apply-templates/> </xsl:copy> </xsl:template> </xsl:stylesheet> [ メッセージ編集済み 編集者: バクシ 編集日時 2004-10-12 12:52 ] |
|
投稿日時: 2004-10-12 13:01
返事ありがとうございます。
確かに<list>、<data>要素には属性をつけません。説明不足でした。 早速試してみたいと思います。 ありがとうございます! |
1