Indentatie (XSL): verschil tussen versies
(Een tussenliggende versie door dezelfde gebruiker niet weergegeven) | |||
Regel 1: | Regel 1: | ||
+ | == Het probleem == | ||
+ | |||
Hoe behoud je een leesbare ingesproken weergave na een transformatie? Alleen maar een header zoals | Hoe behoud je een leesbare ingesproken weergave na een transformatie? Alleen maar een header zoals | ||
Regel 18: | Regel 20: | ||
lxml.etree.XMLSyntaxError: Namespace prefix xalan for indent-amount on output is not defined, line 5, column 67 | 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 == | == Bronnen == | ||
* https://stackoverflow.com/questions/24413146/preserving-whitespace-within-xml-elements-between-attributes-when-using-xslcompi?noredirect=1&lq=1 | * https://stackoverflow.com/questions/24413146/preserving-whitespace-within-xml-elements-between-attributes-when-using-xslcompi?noredirect=1&lq=1 |
Versie van 14 nov 2018 11:57
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"/>