• 締切済み

属性の一部分の検索について

kurusの回答

  • kurus
  • ベストアンサー率52% (12/23)
回答No.2

1213aaaの場合、その数字の値が固定長であれば、 substring(@name,5)とかで取れると思いますけど、 固定長じゃないと難しいですね。

関連するQ&A

  • xmlの属性が重複しているのをxslで変換して表示するにはどうすればいいですか??

    xmlの属性が重複しているのをxslで変換して表示するにはどうすれば良いのでしょうか?? [ xml ] <content> <text>データ1</text> <text>データ2</text> </content> <content> <text>データ3</text> <text>データ4</text> </content> 上記のようなプログラムがあったとして、これを [html] <p>データ1</p> <p>データ2</p> <p>データ3</p> <p>データ4</p> という形で出力したいのですが、どのような xsl プログラムを書けばよいでしょうか?? xml ファイルの方は変更することができません。 ご教授よろしくお願いします。

    • ベストアンサー
    • XML
  • XSLTで、あるノードの Text を別なノードの Name として参照

     変換したいXML文書の最初のトップレベルノードの階層をたどって text を拾っていくと、その text に一致する name のノードが次のトップレベルノードの階層で、出現するようになっています。  そこで、まず、最初のノードの階層をたどっていって、その順序で、2番目のノードから値を引いてきて表示させたいのです。 ■変換したい XML 文書 DataDocument.xml <datadocument> <setteischema> <sitem>solution <scategory>solution1</scategory> </sitem> <sitem>itsales <scategory>itsales1</scategory> </sitem> </setteischema> <setteivalue> <solution> <solution1>ソリューション1</solution1> </solution> <itsales> <itsales1>ITセールス1</itsales1> </itsales> </setteivalue> </datadocument> それに対して、適用したい XSL は次のようなものです。 ■変換命令を記述したXSL文書 StyleDocument.xsl <xsl:template match="setteischema" > <xsl:for-each select="*"> <xsl:variable name="foo" select="text()"/> <xsl:for-each select="*"> <xsl:variable name="bar" select="text()"/> <xsl:value-of select="★1" /> </xsl:for-each> </xsl:for-each> </xsl:template> 実際は★1の部分で setteivalue/$foo/$var といったパスで得られるノードのテキストを表示させたいのです。 どうしたらできますか? よろしくお願いします。

    • ベストアンサー
    • XML
  • XPATHについて

    現在if文でカレント(AAA)以降のすべての兄弟要素の要素名のなかにAAAが存在するかを調べたいのですがどのようなif文にすればいいのでしょうか? <xsl:if test="name(?????='AAA')"></xsl:if> sample.xml <root> <AAA/>※カレント <BBB/> <CCC/> <AAA/> </root>

    • 締切済み
    • XML
  • 親子関係にない要素を限定して取り出すには?

    <test>  <item id="001">   <name>foo</name>  </item>  <item id="002">   <name>bar</name>  </item>  <detail>   <itemid>001</itemid>   <yomigana>フー</yomigana>  </detail>  <detail>   <itemid>002</itemid>   <yomigana>バー</yomigana>  </detail> </test> 上記のようなXML文書から次のようなcsvファイルをつくろうと考えています。 フー,foo バー,bar つまり、「item要素の属性idの値」と「itemid要素の値」が同じものを対にして並べたいのですが、 これがなんともxslでうまいやり方が書けません。 (※実際には、item要素とdetail要素が上記のようにいくつも並びます。 item要素やdetail要素の数は状態によって可変ですが、item要素とdetail要素は必ず1対1で存在します。) どなたかご教示お願いします。 (※XML文書の構成改変はできません)

    • ベストアンサー
    • XML
  • Ajax.RequestでXMLデータをパース

    お世話になります。 Ajax.Requestをして、返ってくるデータがXMLなのですが このXMLをパースして表示したいのですが 何か方法はありませんでしょうか? もしかしたら簡単なことなのかもしれませんが ご存知の方がいらっしゃいましたら ご教授よろしくお願いいたします。 ajax.js //////////// function exec(fname,dispArea) { var httpObj = new Ajax.Request(fname, { method:'GET', onSuccess:function(req) { var text = req.responseText; $(dispArea).innerHTML = text; } } ); } ///////////test.html <script language="javascript" type="text/javascript" src="prototype.js"></script> <script language="javascript" type="text/javascript" src="scriptaculous.js"></script> <script language="javascript" type="text/javascript" src="ajax.js"></script> <span id="disp">exec('hoge.xml', 'disp');</script></span> //////////// hoge.xml <?xml version="1.0" encoding="UTF-8"?> <?xml-stylesheet type="text/xsl" href="hoge.xsl" ?> <top> <list> <row>テスト1</row> </list> <list> <row>テスト2</row> </list> <list> <row>テスト3</row> </list> </top> //////////// hoge.xsl <?xml version="1.0" encoding="UTF-8"?> <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> <xsl:template match="top"> <html><title>XMLパース</title> <body> <xsl:for-each select="list"> <xsl:value-of select="row" /> </xsl:for-each> </body> </html> </xsl:template> </xsl:stylesheet>

  • xsl、xpath式の書き方について

    xslで質問させてください。 以下のようなxmlとxslを作っているのですが、xslの最後のほうで、 sample.xmlの/empList/emp/type/@idの値に応じて、typeList.xmlの/typeList/type/titleの値を取得したくて、 xsl:value-of select="document('typeList.xml')/typeList/type[@id = type/@id]/title/text()" /> と書いていますが、うまくいきません。どうすればいいでしょうか? -----[sample.xml] <?xml version="1.0" encoding="UTF-8"?> <?xml-stylesheet href="a.xsl" type="text/xsl"?> <empList> <emp> <type id="1" /> <name>鈴木</name> <desc>あああ</desc> </emp> <emp> <type id="2" /> <name>田中</name> <desc>いいい</desc> </emp> </empList> -----[typeList.xml] <?xml version="1.0" encoding="UTF-8"?> <?xml-stylesheet href="a.xsl" type="text/xsl"?> <typeList> <type id="1"> <title>タイプ1</title> </type> <type id="2"> <title>タイプ2</title> </type> </typeList> -----[a.xsl] <?xml version="1.0" encoding="UTF-8" ?> <xsl:stylesheet version="1.0" xmlns="http://www.w3.org/1999/xhtml" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> <xsl:output method="html" encoding="UTF-8" omit-xml-declaration="yes" doctype-public="-//W3C//DTD XHTML 1.1//EN" doctype-system="http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd" media-type="text/html" /> <xsl:template match="/"> <html> <head><title>サンプル</title></head> <body> <xsl:apply-templates select="empList/emp" /> </body> </html> </xsl:template> <xsl:template match="emp"> <h2><xsl:value-of select="name/text()" /></h2> <p>タイプ:<xsl:value-of select="document('typeList.xml')/typeList/type[@id = type/@id]/title/text()" /></p> <p>メモ:<xsl:value-of select="desc/text()" /></p> </xsl:template> </xsl:stylesheet>

    • ベストアンサー
    • XML
  • スマートなxsltの記述方法

    xml→xmlを行うxsltの記述方法で質問があります。 元のxmlの例を下に示します。 <?xml version="1.0" encoding="Shift_JIS" ?> <root> <A1> <B1> <DATA1>aaa</DATA1> <DATA2>bbb</DATA2> </B1> </A1> <A2> <DATA3>ccc</DATA3> <DATA4>ddd</DATA4> <B2> <DATA5>eee</DATA5> <C1> <DATA6>fff</DATA6> </C1> <DATA7>ggg</DATA7> </B2> </A2> <DATA8>hhh</DATA8> </root> (実際はDATA1,DATA2のような規則的な要素名ではありません) 変換後のxmlとしては <root> <DATA1>aaa</DATA1> <DATA2>bbb</DATA2>       ・       ・       ・ <DATA8>hhh</DATA8> </root> のように、値を持っている要素だけを、ルートノードの下に記述したものが欲しいのです。 作った物としては、  <xsl:template match="DATA1" >   <xsl:copy>    <xsl:value-of select="." />  </xsl:copy>  </xsl:template> このようなtemplateをDATA1-8まで記述するものです。 何か簡潔な記述方法はないでしょうか? よろしくお願いいたします。

    • ベストアンサー
    • XML
  • XMLの実体参照とXSLT

    次のようなXMLファイルをXSLTで処理したいのですが、&baseの部分がうまく表示できません。 どのようにしたら表示できるでしょうか? ■a.xml <?xml version="1.0" encoding="UTF-8"?> <?xml-stylesheet type="text/xsl" href="a.xsl"?> <!DOCTYPE test [ <!ELEMENT name (#PCDATA)> <!ENTITY base SYSTEM "base.xml"> ]> <test> <name>abc</name> &base; </test> ■base.xml <?xml version="1.0" encoding="UTF-8"?> <base>base</base> ■a.xsl <?xml version="1.0" encoding="UTF-8"?> <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> <xsl:output method="xml" encoding="UTF-8" /> <xsl:template match="/"> <xsl:apply-templates select="test" /> <xsl:apply-templates select="base" /> </xsl:template> <xsl:template match="test"> name:<xsl:value-of select="name" /> </xsl:template> <xsl:template match="base"> base:<xsl:value-of select="base" /> </xsl:template> </xsl:stylesheet> □結果 name:abc ※base.xmlの内容を表示できない

    • ベストアンサー
    • XML
  • XMLをCSVへ変換でほしい情報を取得したい

    XMLからcsvへの変換 下記のXMLのフィールドの項目をxslを使い、msxsl.exe経由で、csvへ変換をしたいのです。 ユーザーデータ部分は抽出可能ですが、aidを抽出する方法がわかりません。 どなたかご教示のほど、お願いいたします。 ■XML <?xml version="1.0" encoding="shift_jis"?> <状況 aid="555"> <ユーザデータ uid="0001"> <氏名>吉野家 太郎</氏名> <ID>123456</ID> <種別>一般</種別> <率>100</率> <最終更新>2012/02/16 15:20:58</最終更新> </ユーザデータ> <ユーザデータ uid="0002"> <氏名>吉野家 次郎</氏名> <ID>123457</ID> <種別>一般</種別> <率>10</率> <最終更新>2012/03/16 15:20:58</最終更新> </ユーザデータ> </状況> ■xsl  ユーザーデータ取得用 <?xml version="1.0" encoding="Shift_JIS"?> <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" > <xsl:output method="text" encoding="Shift_JIS" /> <xsl:template match="/">uid,氏名,ID,種別,率,最終更新 <xsl:apply-templates select="/状況/ユーザデータ"/> </xsl:template> <xsl:template match="ユーザデータ"> <xsl:value-of select="@uid" /><xsl:text>,</xsl:text> <xsl:value-of select="氏名" /><xsl:text>,</xsl:text> <xsl:value-of select="ID" /><xsl:text>,</xsl:text> <xsl:value-of select="種別" /><xsl:text>,</xsl:text> <xsl:value-of select="率" /><xsl:text>,</xsl:text> <xsl:value-of select="最終更新" /><xsl:text> </xsl:text> </xsl:template> </xsl:stylesheet> aidを取得するにはどのようなXSLを書けばよいのでしょうか? 抽出時のレイアウト aid,uid,氏名,ID,種別,率,最終更新 よろしくお願いいたします。

    • ベストアンサー
    • XML
  • IEのmsxmlでxmlをcsvに変換

    現在IEにくっついているmsxmlでxmlファイルをcsvに変換させるxslを作成しています。 msxmlでもmsxml3でも動くようなxslファイルを作成したいので ワーキングドラフト仕様のxslの記述を使用しようと思い下記のようなXMLとxslを作成しました <?xml version="1.0" encoding="Shift_JIS"?> <?xml-stylesheet type="text/xsl" href="CSV.XSL"?> <root> <data> <record> <aaaa>1234</aaaa> <bbbb>5678</bbbb> <cccc>9abc</cccc> <dummy name="ENDRECORD"></dummy> </record> <record> <aaaa>1122</aaaa> <bbbb>3344</bbbb> <cccc>5566</cccc> <dummy name="ENDRECORD"></dummy> </record> </data> </root> xslのposition()が使えないので xmlに <dummy name="ENDRECORD"></dummy> を追加して xslで一件分のデータの終わりを認識させています -csv.xsl- <?xml version="1.0" encoding="Shift_JIS"?> <xsl:stylesheet xmlns:xsl="http://www.w3.org/TR/WD-xsl" version="1.0"> <xsl:template match="/"> <xsl:apply-templates select="root/data/record"/> </xsl:template> <xsl:template match="root/data/record"> <xsl:for-each select="*"> <xsl:choose> <xsl:when test="./@name[(.='ENDRECORD')]">&#xA;</xsl:when> <xsl:otherwise><xsl:value-of select="."/>,</xsl:otherwise> </xsl:choose> </xsl:for-each> </xsl:template> </xsl:stylesheet> しかし、csvのカンマ編集が以下のようになってしまいます。 1234,5678,9abc, ←最後にカンマが残ってしまう 1122,3344,5566, どなたかワーキングドラフト仕様でも勧告後の仕様でも動くような、csvに変換するxslを作成された方はいませんでしょうか。

    • ベストアンサー
    • XML