Difference between revisions of "Id-to-xml-id.xslt"
Jump to navigation
Jump to search
m |
m (Try to move this to proper category) |
||
Line 13: | Line 13: | ||
<!-- nuke the old xml:id= and replace it with what used to be id= (and --> | <!-- nuke the old xml:id= and replace it with what used to be id= (and --> | ||
<!-- issue a warning). --> | <!-- issue a warning). --> | ||
+ | |||
+ | <!-- Written 2006-05-05 by Syd Bauman --> | ||
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" | <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" |
Revision as of 04:49, 6 May 2006
This stylesheet changes id= attributes to xml:id= attributes. That is all.
<nowiki><?xml version="1.0" encoding="UTF-8"?> <!-- Tiny XSLT 1.0 stylesheet that reads in a TEI P4:2004 file (or --> <!-- any other XML file, really) and writes out the same file with --> <!-- the id= attribute changed to the xml:id= attribute. --> <!-- Copyleft 2006 Syd Bauman and the Text Encoding Initiative Consortium --> <!-- The output of this stylesheet is not P5-comnpliant XML; it is just --> <!-- the same P4 document with xml:id= instead of id=. --> <!-- Note that if an element already has both an id= and an xml:id=, we --> <!-- nuke the old xml:id= and replace it with what used to be id= (and --> <!-- issue a warning). --> <!-- Written 2006-05-05 by Syd Bauman --> <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:tei="http://www.tei-c.org/ns/1.0" version="1.0"> <xsl:output method="xml" encoding="UTF-8" cdata-section-elements="eg"/> <!-- Generic copy-everything template --> <xsl:template match="@*|*|processing-instruction()|comment()"> <xsl:copy> <xsl:apply-templates select="*|@*|text()|processing-instruction()|comment()"/> </xsl:copy> </xsl:template> <!-- special template for elements with id= that have to change --> <xsl:template match="*[@id]"> <xsl:if test="@xml:id"> <xsl:message>WARNING: deleting the existing xml:id=<xsl:value-of select="@xml:id"/> attribute of <<xsl:value-of select="name(.)"/> id=<xsl:value-of select="@id"/>>.</xsl:message> </xsl:if> <xsl:element name="{name(.)}"> <xsl:attribute name="xml:id"> <!-- For the value of the new xml:id= attribute use id= ... --> <xsl:value-of select="@id"/> </xsl:attribute> <!-- Now copy over all other attributes (i.e., all but id= and xml:id=) --> <xsl:copy-of select="attribute::*[not(name()='id') and not(name()='xml:id')]"/> <!-- Now copy over all the content --> <xsl:apply-templates select="./*|./text()|./processing-instruction()|./comment()"/> </xsl:element> </xsl:template> </xsl:stylesheet>
</nowiki>