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

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

新規登録して質問してみよう
ただいま回答率
85.50%
XML

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

XPath(XML Path)

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

XSLT

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

Q&A

解決済

1回答

2585閲覧

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

landscape

総合スコア8

XML

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

XPath(XML Path)

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

XSLT

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

0グッド

0クリップ

投稿2016/09/27 12:03

編集2016/09/28 10:47
・お世話になります。私は生態学を専攻している身でありこの分野に疎く、初歩的な質問大変失礼致します。今年の野外調査のデータを全て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ファイルぶん行う必要があるのですが、スタイルシートを用いる手法以外により便利な方法がございましたら方針等お示し頂けますと幸いに思います。

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

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

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

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

landscape

2016/10/02 05:45

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

回答1

0

自己解決

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

投稿2016/10/02 05:47

landscape

総合スコア8

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問