Indentatie (XSL): verschil tussen versies
(Nieuwe pagina aangemaakt met 'Hoe behoud je een leesbare ingesproken weergave na een transformatie? Alleen maar een header zoals <pre> <?xml version="1.0" ?> <xsl:stylesheet version="1.0" xmlns...') |
|||
(4 tussenliggende versies door dezelfde gebruiker niet weergegeven) | |||
Regel 1: | Regel 1: | ||
− | Hoe behoud je een leesbare | + | == Het probleem == |
+ | |||
+ | Hoe behoud je een leesbare ingesprongen weergave na een transformatie? Alleen maar een header zoals | ||
<pre> | <pre> | ||
Regel 9: | Regel 11: | ||
lijkt niet te voldoen - De combinatie ''strip-space'' en ''output indent'' zou de oplossing zijn, maar lijkt dat niet te zijn. | lijkt niet te voldoen - De combinatie ''strip-space'' en ''output indent'' zou de oplossing zijn, maar lijkt dat niet te zijn. | ||
+ | |||
+ | Dit [https://stackoverflow.com/questions/14091633/xsl-why-doesnt-output-indent-work?rq=1]: | ||
+ | <pre> | ||
+ | <xsl:output indent="yes" encoding="UTF-8" xalan:indent-amount="4" /> | ||
+ | </pre> | ||
+ | |||
+ | 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 <code><eExact xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="eExact-Schema.xsd"></code> (+ 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: | ||
+ | |||
+ | <pre> | ||
+ | <?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"/> | ||
+ | </pre> | ||
+ | |||
+ | == Bronnen == | ||
+ | |||
+ | * https://stackoverflow.com/questions/24413146/preserving-whitespace-within-xml-elements-between-attributes-when-using-xslcompi?noredirect=1&lq=1 |
Huidige versie van 4 feb 2019 om 22:12
Het probleem
Hoe behoud je een leesbare ingesprongen 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"/>