XML Tutorial/XPath/current — различия между версиями
Admin (обсуждение | вклад) м (1 версия) |
|
(нет различий)
|
Текущая версия на 11:26, 26 мая 2010
Содержание
current() and name()
<source lang="xml">
File: Data.xml <?xml version="1.0" encoding="utf-8"?>
<item cell="1"> cell 1 </item> <item cell="2"> cell 2 </item> <name cell="1"> name 1 </name> <name cell="2"> name 2 </name> <size cell="1"> size 1 </size> <size cell="2"> size 2 </size>
File: Transform.xslt <?xml version="1.0" encoding="utf-8"?> <xsl:stylesheet
version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> <xsl:template match="/data">
</xsl:template> <xsl:template match="*"> <TR> <TD> <xsl:value-of select="."/> </TD> <TD> <xsl:value-of select="//*[name()=name(current()) and @cell="2"]"/> </TD> </TR> </xsl:template>
</xsl:stylesheet> Output:
<?xml version="1.0" encoding="UTF-8"?>cell 1 | cell 2 |
name 1 | name 2 |
size 1 | size 2 |
current name
<source lang="xml">
File: Data.xml <?xml version="1.0"?> <root ref="rootref" name="blue">
<glossary> <item ref="blue" name="rootref">rootref</item> </glossary> <glossary> <item ref="itemref" name="itemref">itemref</item> </glossary>
</root> File: Transform.xslt <?xml version="1.0"?> <xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> <xsl:output method="xml" indent="yes" /> <xsl:template match="/"> <xsl:apply-templates select="root" /> </xsl:template> <xsl:template match="root"> <xsl:for-each select="//glossary/item[@name=current()/@ref]"> <xsl:copy-of select="." /> <xsl:for-each select="."> <xsl:for-each select="//glossary/item[@name=current()/@ref]"> <xsl:copy-of select="." /> </xsl:for-each> </xsl:for-each> </xsl:for-each> <xsl:for-each select="//glossary/item[@name=./@ref]"> <xsl:copy-of select="." /> </xsl:for-each> <xsl:for-each select="."> <xsl:copy-of select="." /> </xsl:for-each> </xsl:template>
</xsl:stylesheet> Output: <?xml version="1.0" encoding="UTF-8"?> <item ref="blue" name="rootref">rootref</item> <item ref="itemref" name="itemref">itemref</item> <root ref="rootref" name="blue">
<glossary> <item ref="blue" name="rootref">rootref</item> </glossary> <glossary> <item ref="itemref" name="itemref">itemref</item> </glossary>
</root></source>
current() returns a node-set that has the current node as its only member
<source lang="xml">
File: Data.xml <?xml version="1.0" encoding="utf-8"?>
<Choices name="first"> <Choice name="first">11111</Choice> <Choice name="second">22222</Choice> </Choices> <Choices name="second"> <Choice name="first">33333</Choice> <Choice name="second">44444</Choice> </Choices>
File: Transform.xslt <?xml version="1.0" encoding="utf-8"?> <xsl:stylesheet
version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> <xsl:template match="/">
. </TH>
<td>current()</TH> |
. </TH><td>current()</TH> |