我收到第三方提要,我无法确定命名空间,所以我当前不得不在我的XSLT中使用local-name()函数来获取元素值.但是我需要从一个这样的元素中获取一个属性,并且当命名空间未知时我不知道如
注:我使用.net 2.0来处理XSLT
以下是XML的示例:
<?xml version="1.0" encoding="UTF-8"?> <feed xmlns="http://www.w3.org/2005/Atom"> <id>some id</id> <title>some title</title> <updated>2008-09-11T15:53:31+01:00</updated> <link rel="self" href="http://www.somefeedurl.co.uk" /> <author> <name>some author</name> <uri>http://someuri.co.uk</uri> </author> <generator uri="http://aardvarkmedia.co.uk/">AardvarkMedia script</generator> <entry> <id>http://soemaddress.co.uk/branded3/80406</id> <title type="html">My Ttile</title> <link rel="alternate" href="http://www.someurl.co.uk" /> <updated>2008-02-13T00:00:00+01:00</updated> <published>2002-09-11T14:16:20+01:00</published> <category term="mycategorytext" label="restaurant">Test</category> <content type="xhtml"> <div xmlns="http://www.w3.org/1999/xhtml"> <div class="vcard"> <p class="fn org">some title</p> <p class="adr"> <abbr class="type" title="POSTAL" /> <span class="street-address">54 Some Street</span> , <span class="locality" /> , <span class="country-name">UK</span> </p> <p class="tel"> <span class="value">0123456789</span> </p> <div class="geo"> <span class="latitude">51.99999</span> , <span class="longitude">-0.123456</span> </div> <p class="note"> <span class="type">Review</span> <span class="value">Some content</span> </p> <p class="note"> <span class="type">Overall rating</span> <span class="value">8</span> </p> </div> </div> </content> <category term="cuisine-54" label="Spanish" /> <Point xmlns="http://www.w3.org/2003/01/geo/wgs84_pos#"> <lat>51.123456789</lat> <long>-0.11111111</long> </Point> </entry> </feed>
这是XSLT
<?xml version="1.0" encoding="UTF-8" ?> <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:wgs="http://www.w3.org/2003/01/geo/wgs84_pos#" exclude-result-prefixes="atom wgs"> <xsl:output method="xml" indent="yes"/> <xsl:key name="uniqueVenuesKey" match="entry" use="id"/> <xsl:key name="uniqueCategoriesKey" match="entry" use="category/@term"/> <xsl:template match="/"> <locations> <!-- Get all unique venues --> <xsl:for-each select="/*[local-name()='feed']/*[local-name()='entry']"> <xsl:variable name="CurrentVenueKey" select="*[local-name()='id']" ></xsl:variable> <xsl:variable name="CurrentVenueName" select="*[local-name()='title']" ></xsl:variable> <xsl:variable name="CurrentVenueAddress1" select="*[local-name()='content']/*[local-name()='div']/*[local-name()='div']/*[local-name()='p'][@class='adr']/*[local-name()='span'][@class='street-address']" ></xsl:variable> <xsl:variable name="CurrentVenueCity" select="*[local-name()='content']/*[local-name()='div']/*[local-name()='div']/*[local-name()='p'][@class='adr']/*[local-name()='span'][@class='locality']" ></xsl:variable> <xsl:variable name="CurrentVenuePostcode" select="*[local-name()='postcode']" ></xsl:variable> <xsl:variable name="CurrentVenueTelephone" select="*[local-name()='telephone']" ></xsl:variable> <xsl:variable name="CurrentVenueLat" select="*[local-name()='Point']/*[local-name()='lat']" ></xsl:variable> <xsl:variable name="CurrentVenueLong" select="*[local-name()='Point']/*[local-name()='long']" ></xsl:variable> <xsl:variable name="CurrentCategory" select="WHATDOIPUTHERE"></xsl:variable> <location> <locationName> <xsl:value-of select = "$CurrentVenueName" /> </locationName> <category> <xsl:value-of select = "$CurrentCategory" /> </category> <description> <xsl:value-of select = "$CurrentVenueName" /> </description> <venueAddress> <streetName> <xsl:value-of select = "$CurrentVenueAddress1" /> </streetName> <town> <xsl:value-of select = "$CurrentVenueCity" /> </town> <postcode> <xsl:value-of select = "$CurrentVenuePostcode" /> </postcode> <wgs84_latitude> <xsl:value-of select = "$CurrentVenueLat" /> </wgs84_latitude> <wgs84_longitude> <xsl:value-of select = "$CurrentVenueLong" /> </wgs84_longitude> </venueAddress> <venuePhone> <phonenumber> <xsl:value-of select = "$CurrentVenueTelephone" /> </phonenumber> </venuePhone> </location> </xsl:for-each> </locations> </xsl:template> </xsl:stylesheet>
我正在尝试将$CurrentCategory变量替换为适当的代码以显示mycategorytext
我这里没有XSLT编辑器,但您尝试过使用*[local-name()='category']/@*[local-name()='term']