XML/XSLT stylesheet/local name

Материал из Web эксперт
Версия от 11:26, 26 мая 2010; Admin (обсуждение | вклад) (1 версия)
(разн.) ← Предыдущая | Текущая версия (разн.) | Следующая → (разн.)
Перейти к: навигация, поиск

local-name() function

   <source lang="xml">

File: Data.xml <?xml version="1.0" encoding="utf-8"?> <emailList>

 <head:header xmlns:head="http://www.domain.ru/namespace/header">
   <title>Email List</title>
   <maintainer>Joe</maintainer>
 </head:header>
 <person type="personal" id="p001">
   <name>person1</name>
   <email>p@hotmail.ru</email>
 </person>
 <person type="work" id="p002">
   <name>person2</name>
   <email>p@hotmail.ru</email>
 </person>
 <person type="personal" id="p003">
   <name>person3</name>
   <email>p3@hotmail.ru</email>
 </person>

</emailList>

File: Transform.xslt <?xml version="1.0"?> <xsl:stylesheet version="1.0"

 xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
 xmlns:head="http://www.domain.ru/namespace/header">
 <xsl:output method="xml" indent="yes" />
 <xsl:template match="/">
   <xsl:apply-templates select="emailList/head:header" />
 </xsl:template>
 <xsl:template match="head:header">
   <xsl:element name="{local-name()}">
     <xsl:copy-of select="child::*" />
   </xsl:element>
 </xsl:template>

</xsl:stylesheet> Output: <?xml version="1.0" encoding="UTF-8"?> <header>

  <title xmlns:head="http://www.domain.ru/namespace/header">Email List</title>
  <maintainer xmlns:head="http://www.domain.ru/namespace/header">Joe</maintainer>

</header>

</source>
   
  


Local part: <xsl:value-of select="local-name()"/>

   <source lang="xml">

File: Data.xml <?xml version="1.0" encoding="utf-8"?> <pp>

Element name: xsl:stylesheet

Local part: stylesheet

Namespace URI: http://www.w3.org/1999/XSL/Transform

ID:

</pp>

File: Transform.xslt <?xml version="1.0"?> <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

 <xsl:template match="*">

Element name: <xsl:value-of select="name()"/>

Local part: <xsl:value-of select="local-name()"/>

Namespace URI: <xsl:value-of select="namespace-uri()"/>

ID: <xsl:value-of select="id(.)"/>

   <xsl:apply-templates />
 </xsl:template>

</xsl:stylesheet> Output:

<?xml version="1.0" encoding="UTF-8"?>

Element name: pp

Local part: pp

Namespace URI:

ID:

Element name: P

Local part: P

Namespace URI:

ID:

Element name: xsl:stylesheet

Element name: P

Local part: P

Namespace URI:

ID:

Local part: stylesheet

Element name: P

Local part: P

Namespace URI:

ID:

Namespace URI: http://www.w3.org/1999/XSL/Transform

Element name: P

Local part: P

Namespace URI:

ID:

ID:
</source>
   
  


match="head:header"

   <source lang="xml">

File: Data.xml <?xml version="1.0" encoding="utf-8"?> <emailList>

 <head:header xmlns:head="http://www.domain.ru/namespace/header">
   <title>Email List</title>
   <maintainer>Joe</maintainer>
 </head:header>
 <person type="personal" id="p001">
   <name>person1</name>
   <email>p@hotmail.ru</email>
 </person>
 <person type="work" id="p002">
   <name>person2</name>
   <email>p@hotmail.ru</email>
 </person>
 <person type="personal" id="p003">
   <name>person3</name>
   <email>p3@hotmail.ru</email>
 </person>

</emailList> File: Transform.xslt <?xml version="1.0"?> <xsl:stylesheet version="1.0"

 xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
 xmlns:head="http://www.domain.ru/namespace/header">
 <xsl:output method="xml" indent="yes" />
 <xsl:template match="/">
   <xsl:apply-templates select="emailList/head:header" />
 </xsl:template>
 <xsl:template match="head:header">
   <xsl:element name="{local-name()}">
     <xsl:copy-of select="child::*" />
   </xsl:element>
 </xsl:template>

</xsl:stylesheet> Output: <?xml version="1.0" encoding="UTF-8"?> <header>

  <title xmlns:head="http://www.domain.ru/namespace/header">Email List</title>
  <maintainer xmlns:head="http://www.domain.ru/namespace/header">Joe</maintainer>

</header>

</source>
   
  


namespace-uri and local-name

   <source lang="xml">

File: Data.xml <poem xmlns:red="http://www.wbex.ru/red"

 xmlns:blue="http://www.wbex.ru/blue">
 <red:title>From Book IV</red:title>
 <blue:verse>line 1</blue:verse>
 <red:verse>line 2</red:verse>
 <blue:verse>line 3</blue:verse>
 <verse>line 4</verse>

</poem>

File: Transform.xslt <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"

 xmlns:red="http://www.wbex.ru/red"
 xmlns:blau="http://www.wbex.ru/blue" version="1.0">
 <xsl:output method="xml" omit-xml-declaration="yes" indent="no" />
 <xsl:template match="*[local-name()="verse"]">
   Found a verse: name
   <xsl:value-of select="name()" />
   local-name
   <xsl:value-of select="local-name()" />
   namespace-uri
   <xsl:value-of select="namespace-uri()" />
   contents
   <xsl:apply-templates />
 </xsl:template>
 <xsl:template match="red:title" />

</xsl:stylesheet>

Output:


   Found a verse: name
   blue:verse
   local-name
   verse
   namespace-uri
   http://www.wbex.ru/blue
   contents
   line 1
 
   Found a verse: name
   red:verse
   local-name
   verse
   namespace-uri
   http://www.wbex.ru/red
   contents
   line 2
 
   Found a verse: name
   blue:verse
   local-name
   verse
   namespace-uri
   http://www.wbex.ru/blue
   contents
   line 3
 
   Found a verse: name
   verse
   local-name
   verse
   namespace-uri
   
   contents
   line 4
</source>