XML/XSLT stylesheet/processing instruction
Содержание
Generate processing-instruction
File: Data.xml
<poem>
<verse>line 1</verse>
<verse>line 2</verse>
<picture picfile="squadron" />
<verse>line 3</verse>
<verse>line 4</verse>
<verse>line 5</verse>
<picture picfile="ceres" />
</poem>
File: Transform.xslt
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
version="1.0">
<xsl:output method="xml" omit-xml-declaration="yes" indent="no" />
<xsl:template match="verse">
<xsl:processing-instruction name="xml-stylesheet">
<xsl:text>href="headlines.css" type="text/css"</xsl:text>
</xsl:processing-instruction>
<html>
<xsl:apply-templates />
</html>
</xsl:template>
</xsl:stylesheet>
Output:
<?xml-stylesheet href="headlines.css" type="text/css"?><html>line 1</html>
<?xml-stylesheet href="headlines.css" type="text/css"?><html>line 2</html>
<?xml-stylesheet href="headlines.css" type="text/css"?><html>line 3</html>
<?xml-stylesheet href="headlines.css" type="text/css"?><html>line 4</html>
<?xml-stylesheet href="headlines.css" type="text/css"?><html>line 5</html>
match="processing-instruction()"
File: Data.xml
<?xml-stylesheet href="headlines.css" type="text/css"?>
<verse>text</verse>
<?smellPlugIn scent="newCar" duration="12secs"?>
File: Transform.xslt
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
version="1.0">
<xsl:output method="xml" omit-xml-declaration="yes" indent="no" />
<xsl:template match="processing-instruction()">
<xsl:copy />
</xsl:template>
</xsl:stylesheet>
Output:
<?xml-stylesheet scent="newCar" duration="12secs"?>text<?smellPlugIn scent="newCar" duration="12secs"?>
Match processing-instruction()|comment()
File: Data.xml
<wine grape="Chardonnay">
<product>product 2</product>
<year>1997</year>
<price>10.99</price>
</wine>
File: Transform.xslt
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
version="1.0">
<xsl:template match="wine[@grape="Cabernet"]">
<xsl:copy>
<xsl:apply-templates />
</xsl:copy>
</xsl:template>
<xsl:template match="wine" />
<xsl:template match="@*|node()|processing-instruction()|comment()">
<xsl:copy>
<xsl:apply-templates
select="@*|node()|processing-instruction()|comment()" />
</xsl:copy>
</xsl:template>
</xsl:stylesheet>
Output:
<?xml version="1.0" encoding="UTF-8"?>
match="processing-instruction("xml-stylesheet")"
File: Data.xml
<?xml-stylesheet href="headlines.css" type="text/css"?>
<verse>text</verse>
<?smellPlugIn scent="newCar" duration="12secs"?>
File: Transform.xslt
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
version="1.0">
<xsl:output method="xml" omit-xml-declaration="yes" indent="no" />
<xsl:template match="processing-instruction("xml-stylesheet")">
<stylesheet>
<xsl:value-of select="." />
</stylesheet>
</xsl:template>
<xsl:template match="processing-instruction("smellPlugIn")">
<smellData>
<xsl:value-of select="." />
</smellData>
</xsl:template>
<xsl:template match="verse">
<p>
<xsl:apply-templates />
</p>
</xsl:template>
</xsl:stylesheet>
Output:
<stylesheet>scent="newCar" duration="12secs"</stylesheet><p>text</p><smellData>scent="newCar" duration="12secs"</smellData>
processing-instruction with xlink
File: Data.xml
<stylesheetFile type="text/css">headlines.css</stylesheetFile>
File: Transform.xslt
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
version="1.0">
<xsl:output method="xml" omit-xml-declaration="yes" indent="no" />
<xsl:template match="stylesheetFile">
<xsl:processing-instruction name="xml-stylesheet">
href="
<xsl:value-of select="." />
" type="
<xsl:value-of select="@type" />
"
</xsl:processing-instruction>
</xsl:template>
</xsl:stylesheet>
Output:
<?xml-stylesheet href="
headlines.css
" type="
text/css
"
?>