你好,亲爱的 xml 朋友们,美好的一天,
我是 xml 新手,所以不要忍受我的问题......我目前正在使用 xslt 处理器进行一些测试 - 我有一个脚本可以在一个测试数据集上很好地运行 - 并返回良好且有效的结果与这种行为相反,如果我运行相同的脚本,我会得到愚蠢和愚蠢的结果 - 注意:我会得到一个 2 MB 的 csv 格式文件,其中只包含制表位......有趣但真实......
所以这里我的脚本是:
如果我在以下测试数据集上运行此 xslt 代码,我只会得到糟糕的糟糕结果 - 只有制表位......仅此而已......是什么导致了这个错误。注意 - 如果我针对第二个数据集运行代码,我会得到更好的结果。 - 见下文......并在此初始发布结束时查看结果......
<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="text" encoding="utf-8" />
<xsl:template match="/">
<xsl:apply-templates />
</xsl:template>
<xsl:template match="osm">
<xsl:apply-templates />
</xsl:template>
<xsl:template match="node[tag[@k='amenity' and @v='restaurant']]">
<xsl:value-of select="./@id"/>
<xsl:text>	</xsl:text>
<xsl:value-of select="./@lat"/>
<xsl:text>	</xsl:text>
<xsl:value-of select="./@lon"/>
<xsl:text>	</xsl:text>
<xsl:value-of select="./tag[@k = 'cuisine']/@v"/>
<xsl:text>	</xsl:text>
<xsl:value-of select="./tag[@k = 'name']/@v"/>
<xsl:text>	</xsl:text>
<xsl:value-of select="./tag[@k = 'wheelchair']/@v"/>
<xsl:text>	</xsl:text>
<xsl:value-of select="./tag[@k = 'website']/@v"/>
<xsl:text>	</xsl:text>
<xsl:value-of select="./tag[@k = 'addr:country']/@v"/>
<xsl:text>	</xsl:text>
<xsl:value-of select="./tag[@k = 'addr:city']/@v"/>
<xsl:text>	</xsl:text>
<xsl:value-of select="./tag[@k = 'addr:street']/@v"/>
<xsl:text>	</xsl:text>
<xsl:value-of select="./tag[@k = 'addr:housenumber']/@v"/>
<xsl:text>
</xsl:text>
</xsl:template>
<!-- all non-restaurant nodes -->
<xsl:template match="node[tag[@k='amenity' and @v!='restaurant']]" />
</xsl:stylesheet>
如果我对这个测试数据集运行这个 - 那么我只得到一个只有制表位的文件的愚蠢结果。我没有胶水导致错误的原因是什么?
<node id="25242198" lat="49.0077605" lon="8.3560676" version="9" changeset="10151199" user="keinname" uid="165061" timestamp="2011-12-18T22:59:43Z">
<tag k="addr:city" v="Karlsruhe" />
<tag k="addr:country" v="DE" />
<tag k="addr:housenumber" v="6" />
<tag k="addr:postcode" v="76185" />
<tag k="addr:street" v="Durmersheimer Straße" />
<tag k="amenity" v="restaurant" />
<tag k="beer_garden" v="yes" />
<tag k="cuisine" v="german" />
<tag k="name" v="Beim Schupi" />
<tag k="opening_hours" v="Mo-Sa 17:00+; Su 12:00+" />
<tag k="phone" v="+49 721 551220" />
<tag k="website" v="http://www.schupi.de" />
</node>
[...]...
注意:我得到了愚蠢和糟糕的结果 - 只有制表位,仅此而已..
但是,如果我在以下 xml 数据集上运行上述 xslt 处理器代码,我会得到很好的结果......见下文 - !!!
<?xml version='1.0' encoding='UTF-8'?>
<osm version="0.6" generator="Osmosis SNAPSHOT-r26564">
<node id="185612117" version="5" timestamp="2011-01-08T19:23:43Z" uid="290680" user="wheelmap_visitor" changeset="6906586" lat="48.8037523" lon="9.5248779">
<tag k="addr:postcode" v="73614"/>
<tag k="wheelchair" v="yes"/>
<tag k="website" v="http://www.courage-restaurant.de/"/>
<tag k="addr:country" v="DE"/>
<tag k="name" v="Courage"/>
<tag k="amenity" v="restaurant"/>
<tag k="addr:street" v="Künkelinstraße"/>
<tag k="addr:city" v="Schorndorf"/>
<tag k="addr:housenumber" v="33"/>
</node>
<node id="252619189" version="5" timestamp="2011-01-08T19:21:43Z" uid="290680" user="wheelmap_visitor" changeset="6906586" lat="48.8067032" lon="9.5314986">
<tag k="addr:postcode" v="73614"/>
<tag k="wheelchair" v="yes"/>
<tag k="website" v="www.kesselhaus-schorndorf.de"/>
<tag k="addr:country" v="DE"/>
<tag k="name" v="Kesselhaus"/>
<tag k="amenity" v="restaurant"/>
<tag k="addr:street" v="Arnoldstraße"/>
<tag k="addr:city" v="Schorndorf"/>
<tag k="addr:housenumber" v="3"/>
</node>
<node id="319597380" version="1" timestamp="2008-12-17T21:13:15Z" changeset="444629" lat="48.8277913" lon="9.5477029">
<tag k="name" v="Gasthaus zur Linde"/>
<tag k="amenity" v="restaurant"/>
</node>
<node id="319597382" version="1" timestamp="2008-12-17T21:13:15Z" changeset="444629" lat="48.8282523" lon="9.5503109">
<tag k="name" v="China-Garden"/>
<tag k="amenity" v="restaurant"/>
</node>
<node id="339591124" version="2" timestamp="2011-09-22T17:33:36Z" uid="290680" user="wheelmap_visitor" changeset="9366746" lat="48.7888015" lon="9.5079525">
<tag k="cuisine" v="italian"/>
<tag k="wheelchair" v="limited"/>
<tag k="name" v="Pizzeria da Rocco"/>
<tag k="amenity" v="restaurant"/>
</node>
<node id="392682646" version="3" timestamp="2010-05-11T19:00:20Z" uid="12973" user="MattGPS" changeset="4671372" lat="48.8315734" lon="9.5468864">
<tag k="name" v="Gasthaus an der Wieslauf"/>
<tag k="amenity" v="restaurant"/>
</node>
<node id="454516720" version="4" timestamp="2010-12-11T15:30:21Z" uid="12982" user="Michael Schulze" changeset="6625571" lat="48.8031264" lon="9.5344371">
<tag k="addr:postcode" v="73614"/>
<tag k="cuisine" v="regional"/>
<tag k="website" v="http://www.deutscheshaus-schorndorf.de/"/>
<tag k="addr:country" v="DE"/>
<tag k="name" v="Deutsches Haus"/>
<tag k="amenity" v="restaurant"/>
<tag k="addr:street" v="Sonnenscheinstraße"/>
<tag k="addr:city" v="Schorndorf"/>
<tag k="addr:housenumber" v="13"/>
</node>
<node id="572362430" version="3" timestamp="2010-07-04T06:59:50Z" uid="106522" user="neuntoeter" changeset="5130101" lat="48.807953" lon="9.5379673">
<tag k="smoking" v="no"/>
<tag k="name" v="Club Kneipe"/>
<tag k="amenity" v="restaurant"/>
</node>
<node id="613988559" version="1" timestamp="2010-01-15T01:20:03Z" uid="24748" user="mabapla" changeset="3621550" lat="48.7991827" lon="9.551828">
<tag k="name" v="Gaststätte Schützenhaus"/>
<tag k="amenity" v="restaurant"/>
</node>
<node id="859532091" version="1" timestamp="2010-08-13T23:05:14Z" uid="130472" user="fx99" changeset="5486736" lat="48.8062337" lon="9.5278548">
<tag k="website" v="http://www.weinstube-buechsenmacher.de/"/>
<tag k="name" v="Weinstube zum Büchsenmacher"/>
<tag k="amenity" v="restaurant"/>
<tag k="addr:housename" v="5"/>
<tag k="addr:street" v="Höllgasse"/>
</node>
<node id="1625565012" version="1" timestamp="2012-02-09T18:00:04Z" uid="131968" user="changchun_1" changeset="10636279" lat="48.8151893" lon="9.5310692">
<tag k="name" v="Gasthaus Sonne"/>
<tag k="amenity" v="restaurant"/>
</node>
</osm>
看到了-相当不错!!- 我在第二个数据集上运行 xslt 处理器时得到的结果:我没有胶水为什么会得到如此讨厌的结果 - 当我在第一个数据集上应用 xslt 处理器时......!?
185612117 48.8037523 9.5248779 Courage yes http://www.courage-restaurant.de/ DE Schorndorf Künkelinstraße 33
252619189 48.8067032 9.5314986 Kesselhaus yes www.kesselhaus-schorndorf.de DE Schorndorf Arnoldstraße 3
319597380 48.8277913 9.5477029 Gasthaus zur Linde
319597382 48.8282523 9.5503109 China-Garden
339591124 48.7888015 9.5079525 italian Pizzeria da Rocco limited
392682646 48.8315734 9.5468864 Gasthaus an der Wieslauf
454516720 48.8031264 9.5344371 regional Deutsches Haus http://www.deutscheshaus-schorndorf.de/ DE Schorndorf Sonnenscheinstraße 13
任何想法和指向解决方案的指针都非常受欢迎......提前谢谢!