【发布时间】:2017-05-31 13:56:12
【问题描述】:
给定以下 XML 文档。
<?xml version="1.0" encoding="UTF-8"?>
<TrainingCenterDatabase
xsi:schemaLocation="http://www.garmin.com/xmlschemas/TrainingCenterDatabase/v2 http://www.garmin.com/xmlschemas/TrainingCenterDatabasev2.xsd"
xmlns:ns5="http://www.garmin.com/xmlschemas/ActivityGoals/v1"
xmlns:ns3="http://www.garmin.com/xmlschemas/ActivityExtension/v2"
xmlns:ns2="http://www.garmin.com/xmlschemas/UserProfile/v2"
xmlns="http://www.garmin.com/xmlschemas/TrainingCenterDatabase/v2"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:ns4="http://www.garmin.com/xmlschemas/ProfileExtension/v1">
<Activities>
<Activity Sport="Other">
<Id>2017-01-13T19:26:50.000Z</Id>
<Lap StartTime="2017-01-13T19:26:50.000Z">
<TotalTimeSeconds>600.0</TotalTimeSeconds>
<DistanceMeters>0.0</DistanceMeters>
<Calories>42</Calories>
<AverageHeartRateBpm>
<Value>89</Value>
</AverageHeartRateBpm>
<MaximumHeartRateBpm>
<Value>100</Value>
</MaximumHeartRateBpm>
<Intensity>Active</Intensity>
<TriggerMethod>Manual</TriggerMethod>
<Track>
<Trackpoint>
<Time>2017-01-13T19:26:50.000Z</Time>
<AltitudeMeters>-51.599998474121094</AltitudeMeters>
<HeartRateBpm>
<Value>84</Value>
</HeartRateBpm>
<Extensions>
<ns3:TPX/>
</Extensions>
</Trackpoint>
<Trackpoint>
<Time>2017-01-13T19:26:51.000Z</Time>
<AltitudeMeters>-51.599998474121094</AltitudeMeters>
<HeartRateBpm>
<Value>84</Value>
</HeartRateBpm>
<Extensions>
<ns3:TPX/>
</Extensions>
</Trackpoint>
<Trackpoint>
<Time>2017-01-13T19:26:54.000Z</Time>
<AltitudeMeters>-0.6000000238418579</AltitudeMeters>
<HeartRateBpm>
<Value>84</Value>
</HeartRateBpm>
<Extensions>
<ns3:TPX/>
</Extensions>
</Trackpoint>
</Track>
<Extensions>
<ns3:LX/>
</Extensions>
</Lap>
<Creator xsi:type="Device_t">
<Name>Garmin Forerunner 910XT</Name>
<UnitId>3881635667</UnitId>
<ProductID>1328</ProductID>
<Version>
<VersionMajor>3</VersionMajor>
<VersionMinor>20</VersionMinor>
<BuildMajor>0</BuildMajor>
<BuildMinor>0</BuildMinor>
</Version>
</Creator>
</Activity>
</Activities>
<Author xsi:type="Application_t">
<Name>Garmin Connect API</Name>
<Build>
<Version>
<VersionMajor>16</VersionMajor>
<VersionMinor>23</VersionMinor>
<BuildMajor>0</BuildMajor>
<BuildMinor>0</BuildMinor>
</Version>
</Build>
<LangID>en</LangID>
<PartNumber>006-D2449-00</PartNumber>
</Author>
</TrainingCenterDatabase>
还有以下 XSLT。 (我一直在尝试各种不同的版本,但我什至无法让它导出任何东西)
<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:gar="http://www.garmin.com/xmlschemas/TrainingCenterDatabasev2.xsd">
<xsl:output method="xml" indent="yes"/>
<xsl:template match="/">
<xsl:copy-of select="gar:TrainingCenterDatabase/gar:Activities/gar:Activity/gar:Track"/>
</xsl:template>
</xsl:stylesheet>
我试图只导出 XML 的某些节点,这让我大吃一惊。
编辑。在 XML 的命名空间中添加。 编辑。在命名空间和别名中添加。
我想要的是这个。
<Trackpoint>
<Time>2017-01-13T19:26:54.000Z</Time>
<HeartRateBpm>84</HeartRateBpm>
</Trackpoint>
<Trackpoint>
<Time>2017-01-13T19:26:54.000Z</Time>
<HeartRateBpm>84</HeartRateBpm>
</Trackpoint>
<Trackpoint>
<Time>2017-01-13T19:27:54.000Z</Time>
<HeartRateBpm>85</HeartRateBpm>
</Trackpoint>
<Trackpoint>
<Time>2017-01-13T19:28:54.000Z</Time>
<HeartRateBpm>90</HeartRateBpm>
</Trackpoint>
etc.
感谢任何帮助。
【问题讨论】:
-
看起来您在命名空间方面遇到了问题。 this question 的答案可能会有所帮助。
-
我用命名空间更新了 XLST。当我在选择副本中使用“*”时,它可以工作。但是任何时候我都会改变它来寻找其他东西。
-
您需要使用前缀 - 请参阅:stackoverflow.com/a/34762628/3016153 请注意,您的 XML(以及随后在您的样式表中)中的大多数命名空间声明都是未使用的,因此是多余的。 -- 另请注意,您显示的输出不是格式良好的 XML(没有单个根元素)。
-
我离得更近了吗?我添加了前缀,什么也没有。感谢您对格式良好的 xml 的说明。一旦我得到它实际导出的东西,我会修复它:-)