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