我是这些技术的新手,我需要你的帮助。 我需要通过保存在 xml 文件中的 svg 点进行绘制。我需要使用xsl进行转换。当我用任何通用浏览器(即 mozilla)打开此 xml 时,我想将这些点绘制为圆圈。
它们的位置用 x 和 y 坐标来描述。我使用 1000x1000px 背景 Canvas 。请你告诉我这个脚本有什么问题以及如何让它运行? 非常感谢。
这是 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>
最佳答案
在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>
关于使用 xsl 使用 svg 绘制 XML 点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20502872/