我正在尝试创建xaml Line元素的xsl模板。
这是我到目前为止所做的:
...
<xsl:call-template name="Line">
<xsl:with-param name="xOne" select="70"/>
<xsl:with-param name="xTwo" select="905"/>
<xsl:with-param name="yOne" select="500"/>
<xsl:with-param name="yTwo" select="500"/>
</xsl:call-template>
<xsl:template name="Line">
<xsl:param name="xOne"/>
<xsl:param name="xTwo"/>
<xsl:param name="yOne"/>
<xsl:param name="yTwo"/>
<Line xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Stroke="red"
StrokeThickness="2"
X1="$xOne"
X2="$xTwo"
Y1="<xsl:value-of select="number($yOne)"/>" <!-- example: not working -->
Y2="$yTwo"/>
</xsl:template>
问题:
<xsl:value-of select="number($xOne)"/>
但由于我尝试实现它们的方式,这是不可能的。我希望有更多xslt和xaml经验的人可以帮助我吗? :)
我正在使用xsl v1.0
事先提前。答案 0 :(得分:2)
有没有更好的方法来管理这些命名空间?
您可以将命名空间声明添加到样式表根元素:
<xsl:stylesheet version="1.0"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
然后在必要时使用前缀,例如:
<xsl:template name="Line">
<!-- ... -->
<x:Line />
</xsl:template>
其中未使用prefix,将考虑默认命名空间。
参数$ xOne,$ xTwo,...无效
了解AVT并使用:
X1="{$xOne}"
答案 1 :(得分:1)
您可以在根节点中放置名称空间声明,即:
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
>
那么你可以简单地编写,而无需添加名称空间:
<Line
使用{}
设置属性值,例如:
<xsl:template name="Line">
<xsl:param name="xOne"/>
<xsl:param name="xTwo"/>
<xsl:param name="yOne"/>
<xsl:param name="yTwo"/>
<Line
Stroke="red"
StrokeThickness="2"
X1="{$xOne}"
X2="{$xTwo}"
Y1="{$yOne}"
Y2="{$yTwo}"/>
</xsl:template>