XML/XSLT stylesheet/local name
Содержание
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:stylesheetElement name: P
Local part: P
Namespace URI:
ID:
Local part: stylesheetElement name: P
Local part: P
Namespace URI:
ID:
Namespace URI: http://www.w3.org/1999/XSL/TransformElement 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>