Indentatie (XSL)

Uit De Vliegende Brigade
Ga naar: navigatie, zoeken

Het probleem

Hoe behoud je een leesbare ingesproken weergave na een transformatie? Alleen maar een header zoals

<?xml version="1.0" ?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:strip-space elements="*" />
<xsl:output indent="yes" encoding="UTF-8"/>

lijkt niet te voldoen - De combinatie strip-space en output indent zou de oplossing zijn, maar lijkt dat niet te zijn.

Dit [1]:

<xsl:output indent="yes" encoding="UTF-8" xalan:indent-amount="4" />

werkt niet:

lxml.etree.XMLSyntaxError: Namespace prefix xalan for indent-amount on output is not defined, line 5, column 67

XSL biedt geen echte oplossing

Basically is de opmaak van een XML-document zélf, iets wat buiten XSL valt. Het schijnt een ander onderdeel te zijn van het hele systeem dat eventueel iets aan opmaak kan doen. Maar een echte oplossing lijkt er niet te zijn.

Oplossing: Verwijder top-level tag

Tjakka: Zo snel ik in een bepaald document de eerste tag <eExact xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="eExact-Schema.xsd"> (+ bijbehorende closing tag) verwijder, gaat indentatie goed. Vermoedelijke reden: Bij dit schema (?) horen oa. regels voor identatie, en die regels kan-ie niet vinden! Dan werkt dit gewoon:

<?xml version="1.0" ?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:strip-space elements="*" />
<xsl:output indent="yes" encoding="UTF-8"/>

Bronnen