質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

ただいまの
回答率

90.35%

  • XML

    791questions

    XMLは仕様の1つで、マークアップ言語群を構築するために使われています。

  • XPath(XML Path)

    101questions

    XML Path Language (XPath; XMLパス言語)は、マークアップ言語 XML に準拠した文書の特定の部分を指定する言語構文の事をいいます。XPathはXMLとは別の構文を使用します。XMLドキュメントの抽象、論理ストラクチャ上で動作します。

  • XSLT

    12questions

    XSLTは、組み立てられた文書を(XML、HTML、そしてプレーンテキストのような)別のフォーマットに変化する為にデザインされたXMLの為の変換用言語です。

xPath指定時のエラーを解決できません

解決済

回答 1

投稿 編集

  • 評価
  • クリップ 0
  • VIEW 975

landscape

score 6

```###○XMLスタイルシートのエラーに困っております
・お世話になります。私は生態学を専攻している身でありこの分野に疎く、初歩的な質問大変失礼致します。今年の野外調査のデータを全てkmlファイルに記録し、そのデータ量の多さに整理しあぐねております。データ整理には、スタイルシートによる絞り込みを用いたのですがエラーが出てしまいました。

・kmlファイルに含まれるポイントデータのうち、時間のデータ(<styleUrl>#msn_red-blank</styleUrl>)から鳥のデータ(<styleUrl>#msn_pink-blank</styleUrl>)を分離したいと思っております。

最終的にはオリジナルのkmlファイルを以下のようなファイルに変換したいです。
<?xml version="1.0" encoding="UTF-8"?>
<kml xmlns="http://www.opengis.net/kml/2.2" xmlns:gx="http://www.google.com/kml/ext/2.2" xmlns:kml="http://www.opengis.net/kml/2.2" xmlns:atom="http://www.w3.org/2005/Atom">
<Document>
<Folder>
<Placemark>
<name>Route</name>
<description><![CDATA[]]>Route</description>
<styleUrl>#msn_ylw-pushpin</styleUrl>
<MultiGeometry>
<LineString>
<coordinates>
142.748871,42.661877,-12.130737
142.748901,42.661919,-6.593933
142.748901,42.661919,-6.593933
142.748917,42.661915,-3.935120
142.748901,42.661934,-7.262329
</coordinates>
</LineString>
</MultiGeometry>
</Placemark>

<Placemark><name>2016.06.07 17:53:05 memo</name>
<description>左7ノビタキメス警戒</description>
<LookAt>
<longitude>142.748901</longitude>
<latitude>42.661919</latitude>
<altitude>0</altitude>
<range>5.000000</range>
<tilt>0</tilt>
<heading>0.005076180966892688</heading>
<altitudeMode>relativeToGround</altitudeMode><gx:altitudeMode>relativeToSeaFloor</gx:altitudeMode></LookAt>
<styleUrl>#msn_pink-blank</styleUrl>
<Point>
<coordinates>142.748901,42.661919,-6.593933</coordinates>
</Point>
</Placemark>

</Folder>
</Document>
</kml>

エラーメッセージ

エラーメッセージはこちらです。
c:\kml_territory\stylesheet>java Transform q.xml kmlconv.xsl qq.xml
ERROR:  'file:/c:/kml_territory/stylesheet/kmlconv.xsl: line 9: XPath式'Document/Folder/Placemark[styleUrl=#msn_pink-blank]'の解析中にエラーが発生しました。'
FATAL ERROR:  'file:/c:/kml_territory/stylesheet/kmlconv.xsl: line 9: XPath式'Document/Folder/Placemark[styleUrl=#msn_pink-blank]'の解析中にエラーが発生しました。'
Exception in thread "main" javax.xml.transform.TransformerConfigurationException: file:/c:/kml_territory/stylesheet/kmlconv.xsl: line 9: XPath式'Document/Folder/Placemark[styleUrl=#msn_pink-blank]'の解析中にエラーが発生しました。
at com.sun.org.apache.xalan.internal.xsltc.trax.TransformerFactoryImpl.newTemplates(Unknown Source)
at com.sun.org.apache.xalan.internal.xsltc.trax.TransformerFactoryImpl.newTransformer(Unknown Source)
at Transform.main(Transform.java:15)

オリジナルのkmlファイル

<?xml version="1.0" encoding="UTF-8"?>
<kml xmlns="http://www.opengis.net/kml/2.2" xmlns:gx="http://www.google.com/kml/ext/2.2" xmlns:kml="http://www.opengis.net/kml/2.2" xmlns:atom="http://www.w3.org/2005/Atom">
<Document>
<Folder>
<Placemark>
<name>Route</name>
<description><![CDATA[]]>Route</description>
<styleUrl>#msn_ylw-pushpin</styleUrl>
<MultiGeometry>
<LineString>
<coordinates>
142.748871,42.661877,-12.130737
142.748901,42.661919,-6.593933
142.748901,42.661919,-6.593933
142.748917,42.661915,-3.935120
142.748901,42.661934,-7.262329
</coordinates>
</LineString>
</MultiGeometry>
</Placemark>

<Placemark><name>17:52</name>
<description>2016.06.07 17:52:50</description>
<LookAt>
<longitude>142.748871</longitude>
<latitude>42.661877</latitude>
<altitude>0</altitude>
<range>5.000000</range>
<tilt>0</tilt>
<heading>0.005076180966892688</heading>
<altitudeMode>relativeToGround</altitudeMode><gx:altitudeMode>relativeToSeaFloor</gx:altitudeMode></LookAt>
<styleUrl>#msn_red-blank</styleUrl>
<Point>
<coordinates>142.748871,42.661877,-12.130737</coordinates>
</Point>
</Placemark>

<Placemark><name>17:52</name>
<description>2016.06.07 17:52:53</description>
<LookAt>
<longitude>142.748901</longitude>
<latitude>42.661919</latitude>
<altitude>0</altitude>
<range>5.000000</range>
<tilt>0</tilt>
<heading>0.005076180966892688</heading>
<altitudeMode>relativeToGround</altitudeMode><gx:altitudeMode>relativeToSeaFloor</gx:altitudeMode></LookAt>
<styleUrl>#msn_red-blank</styleUrl>
<Point>
<coordinates>142.748901,42.661919,-6.593933</coordinates>
</Point>
</Placemark>

<Placemark><name>2016.06.07 17:53:05 memo</name>
<description>左7ノビタキメス警戒</description>
<LookAt>
<longitude>142.748901</longitude>
<latitude>42.661919</latitude>
<altitude>0</altitude>
<range>5.000000</range>
<tilt>0</tilt>
<heading>0.005076180966892688</heading>
<altitudeMode>relativeToGround</altitudeMode><gx:altitudeMode>relativeToSeaFloor</gx:altitudeMode></LookAt>
<styleUrl>#msn_pink-blank</styleUrl>
<Point>
<coordinates>142.748901,42.661919,-6.593933</coordinates>
</Point>
</Placemark>

</Folder>
</Document>
</kml>

自作のスタイルシート

<?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="/">
<kml xmlns="http://www.opengis.net/kml/2.2" xmlns:gx="http://www.google.com/kml/ext/2.2" xmlns:kml="http://www.opengis.net/kml/2.2" xmlns:atom="http://www.w3.org/2005/Atom">
<xsl:apply-templates select="Document/Folder/Placemark[styleUrl=#msn_pink-blank]"/>
</kml>
</xsl:template>

<xsl:template match="Placemark">
<xsl:copy>
<xsl:apply-templates select="name"/>
<xsl:apply-templates select="description"/>
<xsl:apply-templates select="Lookat"/>
<xsl:apply-templates select="longitude"/>
<xsl:apply-templates select="latitude"/>
<xsl:apply-templates select="styleUrl"/>
<xsl:apply-templates select="Point"/>
<xsl:apply-templates select="MultiGeometry"/>
<xsl:apply-templates select="LineString"/>
<xsl:apply-templates select="coordinates"/>
</xsl:copy>
</xsl:template>

<xsl:template match="name">
<xsl:copy-of select="."/>
</xsl:template>

<xsl:template match="description">
<xsl:copy-of select="."/>
</xsl:template>

<xsl:template match="Lookat">
<xsl:copy-of select="."/>
</xsl:template>

<xsl:template match="longitude">
<xsl:copy-of select="."/>
</xsl:template>

<xsl:template match="latitude">
<xsl:copy-of select="."/>
</xsl:template>

<xsl:template match="styleUrl">
<xsl:copy-of select="."/>
</xsl:template>

<xsl:template match="Point">
<xsl:copy-of select="."/>
</xsl:template>

<xsl:template match="MultiGeometry">
<xsl:copy-of select="."/>
</xsl:template>

<xsl:template match="LineString">
<xsl:copy-of select="."/>
</xsl:template>

<xsl:template match="coordinates">
<xsl:copy-of select="."/>
</xsl:template>

</xsl:stylesheet>

試したこと

スタイルシートの<xsl:apply-templates select="Document/Folder/Placemark[styleUrl=#msn_pink-blank]"/>部分に問題があると考えました。styleUrlの部分を他の要素に変えた際にはエラーがなかったため、[styleUrl=#msn_pink-blank]部分の指定が最も問題であると考えています。

海外のサイトも含め、類似事例の検索、xPathの復習も図書で行ったのですが解決策を見いだせず困窮しておりました。もし、ご存じの方がいらっしゃいましたらご教示頂けますと大変うれしく思います。何卒よろしくお願いいたします。

補足情報

同様の処理を825ファイルぶん行う必要があるのですが、スタイルシートを用いる手法以外により便利な方法がございましたら方針等お示し頂けますと幸いに思います。

  • 気になる質問をクリップする

    クリップした質問は、後からいつでもマイページで確認できます。

    またクリップした質問に回答があった際、通知やメールを受け取ることができます。

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

質問への追記・修正、ベストアンサー選択の依頼

  • ikedas

    2016/10/02 12:59

    スタック・オーバーフローで回答があったようですね。
    http://ja.stackoverflow.com/questions/29218
    問題が解決しましたら、このteratailでの質問も解決ずみにしてください。

    キャンセル

  • landscape

    2016/10/02 14:45

    ikedas様

    コメント戴きありがとうございます。皆様のおかげで私の疑問点は無事解決に至りそうです。
    此方についても「解決済み」に変更する必要があるとのこと、すっかり失念しておりました。みなさまに加えてお手数をおかけするところでした。ご指摘頂き本当にありがとうございました。

    今後とも何卒よろしくお願いいたします。

    キャンセル

回答 1

check解決した方法

0

別サイトで投稿があり、改めて自力でトライしようと考えているところでございます。
最終的に解決できましたら改めて経緯を報告しようと思います。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

15分調べてもわからないことは、teratailで質問しよう!

  • ただいまの回答率 90.35%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

同じタグがついた質問を見る

  • XML

    791questions

    XMLは仕様の1つで、マークアップ言語群を構築するために使われています。

  • XPath(XML Path)

    101questions

    XML Path Language (XPath; XMLパス言語)は、マークアップ言語 XML に準拠した文書の特定の部分を指定する言語構文の事をいいます。XPathはXMLとは別の構文を使用します。XMLドキュメントの抽象、論理ストラクチャ上で動作します。

  • XSLT

    12questions

    XSLTは、組み立てられた文書を(XML、HTML、そしてプレーンテキストのような)別のフォーマットに変化する為にデザインされたXMLの為の変換用言語です。