我是这些技术人员中的新手,我需要你的帮助。 我需要通过保存在xml文件中的svg点来绘制。我需要使用xsl进行转换。当我将使用任何常规浏览器即mozilla打开此xml时,我想将这些点绘制为圆圈。
用x和y坐标描述它们的位置。我使用了1000x1000px背景画布。请问您能告诉我这个脚本有什么问题,以及如何让它运行? 非常感谢你。
这是xml文件的示例:
<?xml version="1.0" ?>
<?xml-stylesheet href="points.xsl" type="text/xsl" ?>
<waypoints>
<point>
<X>20</X>
<Y>20</Y>
</point>
<point>
<X>50</X>
<Y>50</Y>
</point>
</waypoints>
这就是我现在尝试在xsl文件中编写的内容:
<?xml version="1.0"?>
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns="http://www.w3.org/2000/svg">
<xsl:output method="xml" indent="yes" standalone="no"
doctype-public="-//W3C//DTD SVG 1.1//EN"
doctype-system="http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"
media-type="image/svg" />
<xsl:template match="/">
<xsl:for-each select="waypoints//point">
<xsl:variable name="svg_cx" select="waypoints/point/X"/>
<xsl:variable name="svg_cy" select="waypoints/point/Y"/>
<svg xmlns="http://www.w3.org/2000/svg" width="1000" height="1000" >
<circle cx={$svg_cx} cy={$svg_cy} r="40" stroke="black" stroke-width="3" fill="red" />
</svg>
</xsl:for-each>
</xsl:template>
</xsl:stylesheet>
答案 0 :(得分:2)
输出for-each
之外的根元素并使用内部的相对路径:
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns="http://www.w3.org/2000/svg">
<xsl:output
method="xml"
indent="yes"
standalone="no"
doctype-public="-//W3C//DTD SVG 1.1//EN"
doctype-system="http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"
media-type="image/svg" />
<xsl:template match="/">
<svg width="1000" height="1000" >
<xsl:for-each select="waypoints//point">
<circle cx="{X}" cy="{Y}" r="40" stroke="black" stroke-width="3" fill="red" />
</xsl:for-each>
</svg>
</xsl:template>
</xsl:stylesheet>