新书推介:《语义网技术体系》
作者:瞿裕忠,胡伟,程龚
   XML论坛     W3CHINA.ORG讨论区     计算机科学论坛     SOAChina论坛     Blog     开放翻译计划     新浪微博  
 
  • 首页
  • 登录
  • 注册
  • 软件下载
  • 资料下载
  • 核心成员
  • 帮助
  •   Add to Google

    >> 本版讨论SVG, GML, X3D, VRML, VML, XAML, AVALON, Batik等基于XML的图形技术,以及有关GIS的应用。
    [返回] 中文XML论坛 - 专业的XML技术讨论区XML.ORG.CN讨论区 - 高级XML应用『 SVG/GML/VRML/X3D/XAML 』 → 求助:xml+xslt生成svg时出错 查看新帖用户列表

      发表一个新主题  发表一个新投票  回复主题  (订阅本版) 您是本帖的第 2562 个阅读者浏览上一篇主题  刷新本主题   树形显示贴子 浏览下一篇主题
     * 贴子主题: 求助:xml+xslt生成svg时出错 举报  打印  推荐  IE收藏夹 
       本主题类别:     
     wangjianredfox 帅哥哟,离线,有人找我吗?
      
      
      等级:大一(高数修炼中)
      文章:30
      积分:191
      门派:XML.ORG.CN
      注册:2006/5/16

    姓名:(无权查看)
    城市:(无权查看)
    院校:(无权查看)
    给wangjianredfox发送一个短消息 把wangjianredfox加入好友 查看wangjianredfox的个人资料 搜索wangjianredfox在『 SVG/GML/VRML/X3D/XAML 』的所有贴子 引用回复这个贴子 回复这个贴子 查看wangjianredfox的博客楼主
    发贴心情 求助: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时总是提示下载是怎么回事
    请大家帮帮忙


       收藏   分享  
    顶(0)
      




    点击查看用户来源及管理<br>发贴IP:*.*.*.* 2006/6/14 16:24:00
     
     GoogleAdSense
      
      
      等级:大一新生
      文章:1
      积分:50
      门派:无门无派
      院校:未填写
      注册:2007-01-01
    给Google AdSense发送一个短消息 把Google AdSense加入好友 查看Google AdSense的个人资料 搜索Google AdSense在『 SVG/GML/VRML/X3D/XAML 』的所有贴子 访问Google AdSense的主页 引用回复这个贴子 回复这个贴子 查看Google AdSense的博客广告
    2025/7/30 5:33:27

    本主题贴数1,分页: [1]

    管理选项修改tag | 锁定 | 解锁 | 提升 | 删除 | 移动 | 固顶 | 总固顶 | 奖励 | 惩罚 | 发布公告
    W3C Contributing Supporter! W 3 C h i n a ( since 2003 ) 旗 下 站 点
    苏ICP备05006046号《全国人大常委会关于维护互联网安全的决定》《计算机信息网络国际联网安全保护管理办法》
    91.797ms