1
我有這個示例XML文件:@select如何在xsl:variable中工作?
<?xml version="1.0" encoding="UTF-8" ?>
<Diplomanden>
<student matrikelNr="91426" nachname="Q1" vorname="M1"/>
<student matrikelNr="91427" nachname="Q2" vorname="M2"/>
<student matrikelNr="91428" nachname="Q3" vorname="M3"/>
<student matrikelNr="91429" nachname="Q4" vorname="M4"/>
<student matrikelNr="91430" nachname="Q5" vorname="M5"/>
<mitarbeiter persNr="111111" nachname="N1" vorname="V1"/>
<mitarbeiter persNr="111112" nachname="N2" vorname="V2"/>
<mitarbeiter persNr="111113" nachname="N3" vorname="V3"/>
<mitarbeiter persNr="111114" nachname="N4" vorname="V4"/>
<schreibt_DA_bei studentRef="91426" persRef="111111"/>
<schreibt_DA_bei studentRef="91426" persRef="111112"/>
<schreibt_DA_bei studentRef="91427" persRef="111111"/>
<schreibt_DA_bei studentRef="91429" persRef="111113"/>
<schreibt_DA_bei studentRef="91429" persRef="111113"/>
<schreibt_DA_bei studentRef="91429" persRef="111112"/>
</Diplomanden>
和轉換文件:
<?xml version="1.0" encoding="UTF-8"?>
<xsl:transform version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="text"/>
<xsl:template match="schreibt_DA_bei">
<xsl:variable name = "sR" select="@studentRef"/>
<xsl:variable name = "s" select="//student[@matrikelNr = $sR]"/>
<!-- OUTPUT -->
Student <xsl:value-of select="normalize-space($s/@nachname)"/> schreibt Diplomarbeit
</xsl:template>
<xsl:template match="text()|@*"/>
</xsl:transform>
對於
<xsl:variable name = "s" select="//student[@matrikelNr = $sR]"/>
爲什麼參數選擇可變s
工作? //
表示「後代或自己」,我的實際節點是schreibt_DA_bei
。在我看來,「前同胞::學生」的權利(它也有效),但爲什麼「後裔或自我」找到合適的學生?
如果我執行如下的XPath表達式:/child::Diplomanden/child::schreibt_DA_bei/descendant-or-self::student
沒有選擇學生。