以文本方式查看主题

-  中文XML论坛 - 专业的XML技术讨论区  (http://bbs.xml.org.cn/index.asp)
--  『 SVG/GML/VRML/X3D/XAML 』  (http://bbs.xml.org.cn/list.asp?boardid=21)
----  求助:xml+xslt生成svg时出错  (http://bbs.xml.org.cn/dispbbs.asp?boardid=21&rootid=&id=34380)


--  作者: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时总是提示下载是怎么回事
请大家帮帮忙


W 3 C h i n a ( since 2003 ) 旗 下 站 点
苏ICP备05006046号《全国人大常委会关于维护互联网安全的决定》《计算机信息网络国际联网安全保护管理办法》
62.500ms