XSLT visualisering af data fra Kortforsyningen XSLT e

  • Slides: 14
Download presentation
XSLT – visualisering af data fra Kortforsyningen® XSLT (e. Xtensible Stylesheet Language Transformation) –

XSLT – visualisering af data fra Kortforsyningen® XSLT (e. Xtensible Stylesheet Language Transformation) – transformation imellem sprog Julian Hollingbery, NGB

At sælge XSLT En applikation som bygger på geodata fra Kortforsyningen: 1. Indhentning af

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

Fremgangsmåde

XSLT. asp <html><head><meta http-equiv="Content-Type" content="text/html; charset=ISO-8859 -1"></head> <% 'indsamling af div. URL dim URLxml.

XSLT. asp <html><head><meta http-equiv="Content-Type" content="text/html; charset=ISO-8859 -1"></head> <% 'indsamling af div. URL dim URLxml. Root: URLxml. Root = "http: //kmswwwudv 1. kms. dk/kpnf-udv/" dim URLxsl. Root: URLxsl. Root = "http: //kmswww 3. kms. dk/kortpaanettet/" URLxml = URLxml. Root & "kort 10_01. xml” 'XML dokument som ønskes transformeret URLxsl = URLxsl. Root & "css/Legend 2. xsl” 'XSL dokument dim o. XML: set o. XML = Server. Create. Object( "MSXML 2. DOMDocument" ) 'Hent XML o. XML. async = False o. XML. set. Property "Server. HTTPRequest", true o. XML. load( url. XML ) dim xsl. Doc 'Hent XSL set xsl. Doc = Server. Create. Object("Msxml 2. Dom. Document") xsl. Doc. async = false xsl. Doc. set. Property "Server. HTTPRequest", true xsl. Doc. load( url. XSL ) dim s. Html: s. Html = obj. XML. transform. Node( xsl. Doc ) 'Transformer! set xsl. Doc = nothing Response. Write( s. Html ) 'Skriv det transformerede data set o. XML = nothing %> </html>

Min første XSLT – koordinattransformation med Kortforsyningen® Fejlen kunne se sådan ud: <? xml

Min første XSLT – koordinattransformation med Kortforsyningen® Fejlen kunne se sådan ud: <? xml version="1. 0" encoding="ISO-8859 -1" ? > <WMTException version="1. 0. 0"> Transformation mislykkedes. 2: Transformationen mislykkedes. </WMTException> Et succesfuldt svar har denne struktur: <? xml version="1. 0" encoding="ISO-8859 -1" ? > - <dokument> - <transformation> <in_mini_label>utm 32_euref 89</in_mini_label> <in_coor_x>460180</in_coor_x> <in_coor_y>6308691</in_coor_y> <in_coor_z>0</in_coor_z> <out_mini_label>s 34 j</out_mini_label> <out_coor_x>333572, 25</out_coor_x> <out_coor_y>278678, 67</out_coor_y> <out_coor_z>0, 00</out_coor_z> </transformation> </dokument>

Min første XSLT Det komplette XSLT-dokument består af 14 linier XML: <? xml version="1.

Min første XSLT Det komplette XSLT-dokument består af 14 linier XML: <? xml version="1. 0" encoding="ISO-8859 -1"? > <xsl: stylesheet version="1. 0" xmlns: xsl="http: //www. w 3. org/1999/XSL/Transform "> <xsl: output method="html" encoding="ISO-8859 -1" /> <xsl: template match="/"> <xsl: if test="WMTException"> <xsl: value-of select="WMTException" /> </xsl: if> <xsl: if test="not(WMTException)"> <xsl: value-of select="dokument/transformation/out_coor_y" /> <xsl: text>; </xsl: text> <xsl: value-of select="dokument/transformation/out_coor_x" /> </xsl: if> </xsl: template> </xsl: stylesheet>

Transformer XML til HTML – vejnavnedata som XML For eksempel ser resultatet af en

Transformer XML til HTML – vejnavnedata som XML For eksempel ser resultatet af en vejnavnesøgning måske sådan ud: <? xml version="1. 0" encoding="ISO-8859 -1" ? > - <dokument> - <header> <antalforekomster>1</antalforekomster> </header> - <forekomst nummer="1"> <vejkode>9485</vejkode> <vejnavn>Violvej</vejnavn> <kommunekode>217</kommunekode> <kommunenavn>Helsingør Kommune</kommunenavn> </forekomst> </dokument>

Transformer XML til HTML – Lad os lave en dropdownliste med vejnavne Først sætter

Transformer XML til HTML – Lad os lave en dropdownliste med vejnavne Først sætter vi os i roden og kigger efter fejlmeddelelser: <xsl: template match="/"> <xsl: if test="WMTException"> <xsl: value-of select="WMTException" /> </xsl: if> </xsl: template> Derefter sætter vi os i rodens barn <dokument> (hvis det eksisterer) og kigger efter data. <xsl: template match="/dokument"> Data skal indplaceres i HTML-elementet <select>. <select onchange="vaelg. Vej(this. options[this. selected. Index]. text); " name="kommunevej" id="kommunevej" style="width: 164 px; height: 80 px">

Transformer XML til HTML – Findes vejen ikke? Returnerer søgningen forekomster, vil man gerne

Transformer XML til HTML – Findes vejen ikke? Returnerer søgningen forekomster, vil man gerne præsentere det lidt mere brugervenligt end ved en tom liste: <xsl: if test="header/antalforekomster=0"> <option value="">Ingen resultater</option> </xsl: if>

Transformer XML til HTML – For hver vej… For hver <forekomst> indsættes HTML-elementet <option>:

Transformer XML til HTML – For hver vej… For hver <forekomst> indsættes HTML-elementet <option>: <xsl: for-each select="forekomst"> <option> Vi vil gerne indsætte resultatet af søgningen (dvs. ”vejkode; kommunekode”) som værdien af attributten ”value”: <xsl: attribute name="value"> <xsl: value-of select="vejkode" /> <xsl: text>; </xsl: text> <xsl: value-of select="kommunekode" /> </xsl: attribute> Teksten som hører til <option>-elementet, dvs. den tekst som brugeren skal vælge, skal være ”vejnavn (kommunenavn)”: <xsl: value-of select="vejnavn" /> <xsl: text> (</xsl: text> <xsl: value-of select="kommunenavn" /> <xsl: text>)</xsl: text> </option> </xsl: for-each> </select>

Transformer XML til HTML – Afslut XSLT-en Men så er vi sådan set færdige:

Transformer XML til HTML – Afslut XSLT-en Men så er vi sådan set færdige: </xsl: template> </xsl: stylesheet>

Simpelt spørgsmål – kompliceret svar. Hvad kan XSLT tilføre en WMS? XSLT leverer en

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 Get. Capabilities 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 Get. Capabilities <? xml version="1. 0"

Simpelt spørgsmål – kompliceret svar. Signaturforklaring fra WMS Get. Capabilities <? xml version="1. 0" encoding="ISO-8859 -1"? > <xsl: stylesheet version="1. 0” xmlns: xsl="http: // www. w 3. org/1999/XSL/Transform"> xmlns: xlink="http: //www. w 3. org/1999/xlink"> <xsl: output method="html" encoding="ISO-8859 -1" /> <xsl: template match="/"> <body> <h 1>Signaturforklaring for matrikelkortet</h 1> <table> <xsl: for-each select = "WMT_MS_Capabilities/Capability/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' ]">

<tr><td> <xsl: for-each select="Style/Legend. URL/Online. Resource"> <img> <xsl: attribute name="src"> <xsl: value-of select="@xlink: href"

<tr><td> <xsl: for-each select="Style/Legend. URL/Online. Resource"> <img> <xsl: attribute name="src"> <xsl: value-of select="@xlink: href" /> </xsl: attribute> </img> </xsl: for-each> </td><td> <xsl: value-of select="Title" /> </td></tr> </xsl: for-each> </table> </body> </xsl: template> </xsl: stylesheet>