-- 作者:wangjianredfox
-- 发布时间:6/14/2006 4:24:00 PM
-- 求助:xml+xslt生成svg时出错
怎么显示中文呢。。。。。 wj01.xml <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE FigBody SYSTEM "wj01.dtd"> <FigBody> <Rect id="rect01"> <Point id="point01"> <Pabscissa>214</Pabscissa> <Pordinate>263</Pordinate> </Point> <Width>98</Width> <Height>67</Height> <Angle>0</Angle> </Rect> <Arc id="Arc01"> <sPoint id="sPoint01"> <Pabscissa>447</Pabscissa> <Pordinate>342.2046</Pordinate> </sPoint> <angle>0,1</angle> <R>39.2046</R> <rx>486.2046</rx> <ry>303</ry> </Arc> <Circle id="Circle01"> <Point id="point02"> <Pabscissa>341</Pabscissa> <Pordinate>310</Pordinate> </Point> <RCircle>44.1475</RCircle> </Circle> <Dot id="Dot01"> <Point id="point03"> <Pabscissa>158.439</Pabscissa> <Pordinate>307.942</Pordinate> </Point> <Point id="point04"> <Pabscissa>141.719</Pabscissa> <Pordinate>344.516</Pordinate> </Point> <Point id="point05"> <Pabscissa>103.189</Pabscissa> <Pordinate>314.212</Pordinate> </Point> </Dot> <Polyline id="Polyline01" linewidth="2"> <Point id="Point06"> <Pabscissa>148</Pabscissa> <Pordinate>443</Pordinate> </Point> <Point id="Point07"> <Pabscissa>349</Pabscissa> <Pordinate>390</Pordinate> </Point> <Point id="Point08"> <Pabscissa>410</Pabscissa> <Pordinate>486</Pordinate> </Point> <Point id="Point09"> <Pabscissa>219</Pabscissa> <Pordinate>419</Pordinate> </Point> </Polyline> <Curve id="Curve01" linewidth="1"> <Point id="Point10"> <Pabscissa>183</Pabscissa> <Pordinate>380</Pordinate><Angle></Angle> </Point> <Point id="Point11"> <Pabscissa>364</Pabscissa> <Pordinate>473</Pordinate><Angle></Angle> </Point> <Point id="Point12"> <Pabscissa></Pabscissa> <Pordinate></Pordinate><Angle></Angle> </Point> <Point id="Point13"> <Pabscissa>447</Pabscissa> <Pordinate>390</Pordinate><Angle></Angle> </Point> <Point id="Point14"> <Pabscissa>84</Pabscissa> <Pordinate>362</Pordinate><Angle></Angle> </Point> </Curve> <DoubleCurve id="DoubleCurve01"> <Point id="Point15"> <Pabscissa>44</Pabscissa> <Pordinate>271</Pordinate><Angle></Angle> </Point> <Point id="Point16"> <Pabscissa>111</Pabscissa> <Pordinate>269</Pordinate><Angle></Angle> </Point> <Point id="Point17"> <Pabscissa>304</Pabscissa> <Pordinate>234</Pordinate><Angle></Angle> </Point> <Point id="Point18"> <Pabscissa>479</Pabscissa> <Pordinate>253</Pordinate><Angle></Angle> </Point> <Point id="Point19"> <Pabscissa>44</Pabscissa> <Pordinate>271</Pordinate><Angle></Angle> </Point> <Point id="Point20"> <Pabscissa>115</Pabscissa> <Pordinate>310</Pordinate><Angle></Angle> </Point> <Point id="Point21"> <Pabscissa>305</Pabscissa> <Pordinate>272</Pordinate><Angle></Angle> </Point> <Point id="Point22"> <Pabscissa>479</Pabscissa> <Pordinate>255</Pordinate><Angle></Angle> </Point> </DoubleCurve> <Text id="Text01" height="30"> <Point id="Point23"> <Pabscissa>277</Pabscissa> <Pordinate>315</Pordinate><Angle></Angle> </Point> <Content>SVG IN GIS </Content> </Text> <Polylines id="Polylines01" lineswidth="2"> <Point id="Point24"> <Pabscissa>100</Pabscissa> <Pordinate>100</Pordinate><Angle></Angle> </Point> <Point id="Point25"> <Pabscissa>300</Pabscissa> <Pordinate>100</Pordinate><Angle></Angle> </Point> <Point id="Point23"> <Pabscissa>300</Pabscissa> <Pordinate>300</Pordinate><Angle></Angle> </Point> </Polylines> </FigBody> wj01.xsl<?xml version="1.0" encoding="UTF-8"?> <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> <xsl:output method="xml" indent="yes" encoding="UTF-16" version="1.0" standalone="no" media-type="image/svg+xml"/> <xsl:template match="/"> <svg width="1000" height="1000"> <g id="rects" style="stroke:#000000"> <xsl:for-each select="FigBody/Rect"> <xsl:variable name="rect_id" select="@id"/> <xsl:variable name="rw" select="Width"/> <xsl:variable name="rh" select="Height"/> <xsl:variable name="ra" select="Angle"/><!--unused--> <xsl:for-each select="Point"> <xsl:variable name="px" select="Pabscissa"/> <xsl:variable name="py" select="Pordinate"/> <rect id="{$rect_id}" x="{$px}" y="{$py}" rx="{$ra}" ry="{$ra}" width="{$rw}" height="{$rh}" style="fill:blue"> </rect> </xsl:for-each> </xsl:for-each> </g> <g id="arc" style="stroke:#000000"> <xsl:for-each select="FigBody/Arc"> <xsl:variable name="arc_id" select="@id"/> <xsl:variable name="aa" select="angle"/> <xsl:variable name="r" select="R"/> <xsl:variable name="x" select="rx"/> <xsl:variable name="y" select="ry"/> <xsl:for-each select="sPoint"> <xsl:variable name="point_id" select="@id"/> <xsl:variable name="px" select="Pabscissa"/> <xsl:variable name="py" select="Pordinate"/> <path d="M{$px},{$py} a{$r},{$r} 0 {$aa} {$x},{$y}" id="{$arc_id}" fill="none" stroke="black" stroke-width="1"/> </xsl:for-each> </xsl:for-each> </g> <g id="circle" style="stroke:#000000"> <xsl:for-each select="FigBody/Circle"> <xsl:variable name="circle_id" select="@id"/> <xsl:variable name="cr" select="RCircle"/> <xsl:for-each select="Point"> <xsl:variable name="point_id" select="@id"/> <xsl:variable name="rx" select="Pabscissa"/> <xsl:variable name="ry" select="Pordinate"/> <circle cx="{$rx}" cy="{$ry}" r="{$cr}"/> </xsl:for-each> </xsl:for-each> </g> <g id="dot" style="stroke:#000000"> <xsl:for-each select="FigBody/Dot"> <xsl:variable name="dot_id" select="@id"/> <xsl:for-each select="Point"> <xsl:variable name="point_id" select="@id"/> <xsl:variable name="x" select="Pabscissa"/> <xsl:variable name="y" select="Pordinate"/> <circle cx="{$x}" cy="{$y}" r="1" fill="none"/> </xsl:for-each> </xsl:for-each> </g> <g id="polyline" style="stroke:#000000"> <xsl:for-each select="FigBody/Polyline"> <xsl:variable name="polyline_id" select="@id"/> <xsl:variable name="polyline_width" select="@linewidth"/> <xsl:for-each select="Point"> <xsl:variable name="point_id" select="@id"/> <xsl:variable name="x[i++]" select="Pabscissa"/> <xsl:variable name="y[i++]" select="Pordinate"/> </xsl:for-each> <polyline points="{$x[0]},{$y[0]} {$x[1]},{$y[1]} {$x[2]},{$y[2]} {$x[3]},{$y[3]}" fill="none" stroke0-width="polyline_width"/> </xsl:for-each> </g> <g id="curve" style="stroke:#000000"> <xsl:for-each select="FigBody/Curve"> <xsl:variable name="curve_id" select="@id"/> <xsl:variable name="curve_width" select="@linewidth"/> <xsl:for-each select="Point"> <xsl:variable name="point_id" select="@id"/> <xsl:variable name="x[i++]" select="Pabscissa"/> <xsl:variable name="y[i++]" select="Pordinate"/> </xsl:for-each> <path d="M{$x[0]},{$y[0]} c{$x[1]},{$y[1]} {$x[2]},{$y[2]} {$x[3]},{$y[3]} {$x[4]},{$y[4]}" fill="none" stroke0-width="curve_width"/> </xsl:for-each> </g> <g id="doublecurve" style="stroke:#000000"> <xsl:for-each select="FigBody/DoubleCurve"> <xsl:variable name="dcurve_id" select="@id"/> <xsl:for-each select="Point"> <xsl:variable name="point_id" select="@id"/> <xsl:variable name="x[i++]" select="Pabscissa"/> <xsl:variable name="y[i++]" select="Pordinate"/> </xsl:for-each> <path d="M{$x[0]},{$y[0]} c{$x[1]},{$y[1]} {$x[2]},{$y[2]} {$x[3]},{$y[3]}" fill="none" stroke0-width="2"/> <path d="M{$x[4]},{$y[4]} c{$x[5]},{$y[5]} {$x[6]},{$y[6]} {$x[7]},{$y[7]}" fill="none" stroke0-width="2"/> </xsl:for-each> </g> <g id="text" style="stroke:#000000"> <xsl:for-each select="FigBody/Text"> <xsl:variable name="text_id" select="@id"/> <xsl:variable name="th" select="@height"/> <xsl:variable name="content" select="Content"/> <xsl:variable name="tx" select="Point/Pabscissa"/> <xsl:variable name="ty" select="Point/Pordinate"/> <text x="{$x}" y="{$y}" font-size="th" fill="yellow" stroke="red">{$content}</text> </xsl:for-each> </g> <g id="polylines" style="stroke:#000000"> <xsl:for-each select="FigBody/Polylines"> <xsl:variable name="polyline_id" select="@id"/> <xsl:variable name="lw" select="@linewidth"/> <xsl:for-each select="Point"> <xsl:variable name="point_id" select="@id"/> <xsl:variable name="x[i++]" select="Pabscissa"/> <xsl:variable name="y[i++]" select="Pordinate"/> </xsl:for-each> <polygon id="up" points="{$x[0]},{$y[0]-10} {$x[1]+10},{$y[1]-10} {$x[2]}+10,{$y[2]}" fill="none" stroke="purple" stroke-width="2"/> <polygon id="down" points="{$x[0]},{$y[0]+10} {$x[1]-10},{$y[1]+10} {$x[2]-10},{$y[2]}" fill="none" stroke="purple" stroke-width="2"/> </xsl:for-each> </g> </svg> </xsl:template> </xsl:stylesheet> wj01.asp <%@ Language="VBScript"%> <% Response.Clear Response.Buffer = True Dim xmldoc Dim xsldoc Dim strResult Response.ContentType = "image/svg+xml" set xmldoc = Server.CreateObject("MSXML2.DOMDOCUMENT") xmldoc.async = false xmldoc.load Server.MapPath("wj01.xml") set xsldoc = Server.CreateObject("MSXML2.DOMDOCUMENT") xsldoc.async = false xsldoc.load Server.MapPath("wj01.xsl") strResult=xmldoc.transformNode(xsldoc) strResult=Replace(strResult,"UTF-16","UTF-8") Response.Write strResult %> 运行asp时总是提示下载是怎么回事 请大家帮帮忙
|