English | Français | >> Deutsch << | Magyar | 中文 | Polski ZVON > Tutorials > XSLT Tutorial
>> Seite 55 << | Zurück | Vor | Inhalt | Element-Index

Die id()-Funktion selektiert Elemente bei ihrer eindeutigen ID. XSLT Stylesheet 1 zeigt einfache Anwendungsbeispiele. Untersuchen Sie XSLT Stylesheet 2 genau. Der Inhalt des title-Elements wird nicht in eckigen Klammern dargestellt "[]" da in der DTD seine Attribute als CDATA, und nicht als ID definiert wurden. Mehrere ID's in einem bereitgestellt werden. ( XSLT Stylesheet 3 ).

XSLT Stylesheet 1

XML Quelltext
<!DOCTYPE source [ 

<!ELEMENT chapter ANY>
<!ATTLIST chapter id ID #REQUIRED>
<!ELEMENT title ANY>
<!ATTLIST title id CDATA #REQUIRED>
<!ELEMENT text ANY>
<!ATTLIST text value ID #REQUIRED>

]>
<source>

<chapter id="intro">Introduction</chapter>
<chapter id="body">
     <title id="t1">BODY</title>
     <text value="text1">text text text</text>
</chapter>
<chapter id="end">THE END</chapter>

</source>

Ausgabe
<P>Introduction</P>
<P>text text text</P>
<P>text text text</P>

HTML-Ansicht

Introduction

text text text

text text text

XSLT Stylesheet
<xsl:stylesheet version = '1.0'
     xmlns:xsl='http://www.w3.org/1999/XSL/Transform'>

<xsl:template match="/">
     <P>
          <xsl:value-of select="id('intro')"/>
     </P>
     <P>
          <xsl:value-of select="id('body')/text"/>
     </P>
     <P>
          <xsl:value-of select="id('text1')"/>
     </P>
</xsl:template>


</xsl:stylesheet>


XSLT Stylesheet 2

XML Quelltext
<!DOCTYPE source [ 

<!ELEMENT chapter ANY>
<!ATTLIST chapter id ID #REQUIRED>
<!ELEMENT title ANY>
<!ATTLIST title id CDATA #REQUIRED>
<!ELEMENT text ANY>
<!ATTLIST text value ID #REQUIRED>

]>
<source>

<chapter id="intro">Introduction</chapter>
<chapter id="body">
     <title id="t1">BODY</title>
     <text value="text1">text text text</text>
</chapter>
<chapter id="end">THE END</chapter>

</source>

Ausgabe
<DIV>chapter : id = intro [ Introduction]</DIV>
<DIV>chapter : id = body [
BODY
text text text
]</DIV>
<DIV>title : id = t1 [ ]</DIV>
<DIV>text : value = text1 [ text text text]</DIV>
<DIV>chapter : id = end [ THE END]</DIV>

HTML-Ansicht
chapter : id = intro [ Introduction]
chapter : id = body [ BODY text text text ]
title : id = t1 [ ]
text : value = text1 [ text text text]
chapter : id = end [ THE END]
XSLT Stylesheet
<xsl:stylesheet version = '1.0'
     xmlns:xsl='http://www.w3.org/1999/XSL/Transform'>

<xsl:template match="/">
     <xsl:for-each select="//*[@*]">
          <DIV>
               <xsl:value-of select="name()"/>
               <xsl:text> : </xsl:text>
               <xsl:apply-templates select="@*"/>
          </DIV>
     </xsl:for-each>
</xsl:template>

<xsl:template match="@*">
     <xsl:value-of select="name()"/>
     <xsl:text> = </xsl:text>
     <xsl:value-of select="."/>
     <xsl:text> [ </xsl:text>
     <xsl:value-of select="id(.)"/>
     <xsl:text>]</xsl:text>
</xsl:template>


</xsl:stylesheet>


XSLT Stylesheet 3

XML Quelltext
<!DOCTYPE source [ 

<!ELEMENT chapter ANY>
<!ATTLIST chapter id ID #REQUIRED>
<!ELEMENT title ANY>
<!ATTLIST title id CDATA #REQUIRED>
<!ELEMENT text ANY>
<!ATTLIST text value ID #REQUIRED>

]>
<source>

<chapter id="intro">Introduction</chapter>
<chapter id="body">
     <title id="t1">BODY</title>
     <text value="text1">text text text</text>
</chapter>
<chapter id="end">THE END</chapter>

</source>

Ausgabe
<P style="color:red">Introduction</P>
<P style="color:red">
BODY
text text text
</P>
<P style="color:red">THE END</P>
<P>Introduction</P>
<P>Introduction</P>
<P>THE END</P>

HTML-Ansicht

Introduction

BODY text text text

THE END

Introduction

Introduction

THE END

XSLT Stylesheet
<xsl:stylesheet version = '1.0'
     xmlns:xsl='http://www.w3.org/1999/XSL/Transform'>

<xsl:template match="/">
     <xsl:apply-templates select="id('intro body end')"/>
     <P>
          <xsl:value-of select="id('intro body end')"/>
     </P>
     <P>
          <xsl:value-of select="id('body end intro')"/>
     </P>
     <P>
          <xsl:value-of select="id('in bod end')"/>
     </P>
</xsl:template>

<xsl:template match="*">
     <P style="color:red">
          <xsl:value-of select="."/>
     </P>
</xsl:template>


</xsl:stylesheet>