2008-12-03 31 views
2

我正在使用XSLT解析文檔。在XSLT中,我使用document()函數加載參考文檔,並且可以從兩個文檔中訪問項目。源文檔和參考文檔都有一個名爲name的屬性。我如何比較一個和另一個。我通過聲明一個變量來解決這個問題,但是如果可能的話,我寧願這樣做。在我看來,我需要將命名空間放在事物的周圍,但不知道如何去做。訪問多個源的相同名稱元素

源文件:

<?xml version="1.0" encoding="UTF-8"?> 
<SoccerMatch revision="21" id="2849180" date="20080405" scheduledStart="1245" venue="Emirates Stadium" status="Result" comment="" league="Friendly Match" attendance="60111"> 
    <stuffhere>stuff</stuffhere> 
    <stuffhere>stuff</stuffhere> 
    <stuffhere>stuff</stuffhere> 
    <stuffhere>stuff</stuffhere> 
    <stuffhere>stuff</stuffhere> 
</SoccerMatch> 

參考文獻(comp.xml):

<?xml version="1.0" encoding="utf-8"?> 
<competitions> 
    <competition id="100" league="Barclays Premier League"/> 
    <competition id="101" league="The Coca-Cola Football League Championship"/> 
    <competition id="101" league="The Coca-Cola Football League Championship Play-Offs Semi-Final"/> 
    <competition id="101" league="The Coca-Cola Football League Championship Play-Offs Final"/> 
    <competition id="102" league="Coca-Cola Football League One"/> 
    <competition id="102" league="Coca-Cola Football League One Play-Offs Semi-Final"/> 
    <competition id="102" league="Coca-Cola Football League One Play-Offs Final"/> 
    <competition id="103" league="Coca-Cola Football League Two"/> 
    <competition id="103" league="Coca-Cola Football League Two Play-Offs Semi-Final"/> 
    <competition id="103" league="Coca-Cola Football League Two Play-Offs Final"/> 
    <competition id="104" league="Blue Square Premier"/> 
    <competition id="104" league="Blue Square Premier Play-Offs Semi-Final"/> 
    <competition id="104" league="Blue Square Premier Final"/> 
    <competition id="105" league="Nationwide Championship Shield"/> 
    <competition id="120" league="Clydesdale Bank Premier League"/> 
    <competition id="121" league="The Irn-Bru Scottish Football League Championship First Division"/> 
    <competition id="121" league="The Irn-Bru Scottish Football League Championship First Division Play-Offs Semi-Final"/> 
    <competition id="121" league="The Irn-Bru Scottish Football League Championship First Division Play-Offs Final"/> 
    <competition id="122" league="The Irn-Bru Scottish Football League Championship Second Division"/> 
    <competition id="122" league="The Irn-Bru Scottish Football League Championship Second Division Play-Offs Semi-Final"/> 
    <competition id="122" league="The Irn-Bru Scottish Football League Championship Second Division Play-Offs Final"/> 
    <competition id="123" league="The Irn-Bru Scottish Football League Championship Third Division"/> 
</competitions> 

XSLT

<xsl:template match="/SoccerMatch"> 
<xmlfeed> 
<payload payload_class="mobile_football_match_details" payload_name="Payload"> 
<xsl:variable name="compId" select="document('comp.xml')/competitions/competition[@[email protected]]/@id" /> 

回答

3

不要看到你的XML格式的 「name」 屬性。你的意思是「身份證」?我不認爲你可以在這裏控制命名空間。請參閱Ken Holman關於這一點的討論here

我會去你的變量的想法。喜歡的東西:

<xsl:template match="/SoccerMatch"> 
<xsl:variable name="matchId" select="@id"/>  
<xsl:for-each select="document('competitions.xml')/competitions/competition"> 
    <xsl:if test="$matchId = @id"> 
    <xmlfeed> 
     <payload payload_class="mobile_football_match_details" payload_name="Payload"> 
     <!-- add more stuff here--> 
     </payload> 
    </xmlfeed> 
    </xsl:if> 
</xsl:for-each> 

相關問題