XSLT – visualisering af data fra Kortforsyningen® XSLT (eXtensible Stylesheet Language Transformation) – transformation imellem sprog Julian Hollingbery, NGB
At sælge XSLT En applikation som bygger på geodata fra Kortforsyningen: 1. Indhentning af data 2. Validering af data 3. Præsentation af data XSLT er en effektiv, overskuelig og genanvendelig metode til at implementere del 1 og 2, og i mange tilfælde også 3. XSLT kan også danne et godt grundlag for en underopgave i et projekt: ”Lav en XSLT der transformerer disse XML-input til dette output”. XSLT er anvendeligt i alle væsentlige programmeringsmiljøer. Dette er med til at øge genanvendeligheden på tværs af projekter.
Fremgangsmåde
XSLT.asp <% 'indsamling af div. URL dim URLxmlRoot: URLxmlRoot = " dim URLxslRoot: URLxslRoot = " URLxml = URLxmlRoot & "kort10_01.xml” 'XML dokument som ønskes transformeret URLxsl = URLxslRoot & "css/Legend2.xsl” 'XSL dokument dim oXML: set oXML = Server.CreateObject( "MSXML2.DOMDocument" ) 'Hent XML oXML.async = False oXML.setProperty "ServerHTTPRequest", true oXML.load( urlXML ) dim xslDoc 'Hent XSL set xslDoc = Server.CreateObject("Msxml2.DomDocument") xslDoc.async = false xslDoc.setProperty "ServerHTTPRequest", true xslDoc.load( urlXSL ) dim sHtml: sHtml = objXML.transformNode( xslDoc ) 'Transformer! set xslDoc = nothing Response.Write( sHtml ) 'Skriv det transformerede data set oXML = nothing %>
Min første XSLT – koordinattransformation med Kortforsyningen® Fejlen kunne se sådan ud: Transformation mislykkedes. 2: Transformationen mislykkedes. Et succesfuldt svar har denne struktur: - utm32_euref s34j , ,67 0,00
Min første XSLT Det komplette XSLT-dokument består af 14 linier XML: ;
Transformer XML til HTML – vejnavnedata som XML For eksempel ser resultatet af en vejnavnesøgning måske sådan ud: Violvej 217 Helsingør Kommune
Transformer XML til HTML – Lad os lave en dropdownliste med vejnavne Først sætter vi os i roden og kigger efter fejlmeddelelser: Derefter sætter vi os i rodens barn (hvis det eksisterer) og kigger efter data. Data skal indplaceres i HTML-elementet. <select onchange="vaelgVej(this.options[this.selectedIndex].text);" name="kommunevej" id="kommunevej" style="width:164px;height:80px">
Transformer XML til HTML – Findes vejen ikke? Returnerer søgningen ingen forekomster, vil man gerne præsentere det lidt mere brugervenligt end ved en tom liste: Ingen resultater
Transformer XML til HTML – For hver vej… For hver indsættes HTML-elementet : Vi vil gerne indsætte resultatet af søgningen (dvs. ”vejkode;kommunekode”) som værdien af attributten ”value”: ; Teksten som hører til -elementet, dvs. den tekst som brugeren skal vælge, skal være ”vejnavn (kommunenavn)”: ( )
Transformer XML til HTML – Afslut XSLT-en Men så er vi sådan set færdige:
Simpelt spørgsmål – kompliceret svar. Hvad kan XSLT tilføre en WMS? XSLT leverer en enkel måde at hente små stykker specifik data ud af komplicerede XML-dokumenter, for eksempel svaret på en GetCapabilities forespørgsel Det følgende XSL-dokument kan bruges til at lave en signaturforklaring til en given samling af lag fra Kortforsyningen®s tjeneste ”kms_vector_basic_01”
Simpelt spørgsmål – kompliceret svar. Signaturforklaring fra WMS GetCapabilities <xsl:stylesheet version="1.0” xmlns:xsl=" xmlns:xlink=" Signaturforklaring for matrikelkortet <xsl:for-each select = "WMT_MS_Capabilities/Capability/Layer/Layer[ Name='MAT_LAND' or Name='PKT_VEJ' or Name='FRSKOV_L' or Name='MAT_NR' or Name='VEJNAVN' or Name='MAT_REG' or Name='FRSKOV_P' ]">
<xsl:for-each select="Style/LegendURL/OnlineResource">