XSLT中的动态HREF使用属性不按预期工作

时间:2014-01-27 18:12:48

标签: xml xslt

我是XSLT的新手,我正在努力让这个正确格式化。我希望输出HTML基本上是这样的行:

1 : SO090040717 113657 XXX 56371444826

其中“SalesId”是一个可点击的URL,格式化(在本例中)基本上是:

<a href="dynamics://TEST?DrillDown_0?tableid=40276&field=RecId&value=5637144826&company=XXX">SO090040717</a>

错误似乎出现在<a></a>文字的某个地方?

示例XML:

<ELEMENT>
    <RECORD>
        <COUNTER>1</COUNTER>
        <DRILLDOWNGROUP>TEST</DRILLDOWNGROUP>
        <SalesId>SO090040717</SalesId>
        <PurchOrderFormNum>113657</PurchOrderFormNum>
        <dataAreaId>XXX</dataAreaId>
        <RecId>5637144826</RecId>
        <TableId>40276</TableId>
    </RECORD>
</ELEMENT>

我的,非工作的,XSLT:

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="html"/>
<xsl:template match="/">
<html>
<body>
<xsl:for-each select="ELEMENT">
<p>
<xsl:for-each select="RECORD">
    <p>
        <xsl:value-of select="COUNTER"/>
        <xsl:text> : </xsl:text>
        <a>
            <xsl:attribute name="href">
                <xsl:text>Dynamics://</xsl:text>
                <xsl:value-of select="DrillDownGroup"/>
                <xsl:text>?DrillDown_0?tableid=</xsl:text>
                <xsl:value-of select="TableId"/>
                <xsl:text>&field=RecId&value=</xsl:text>
                <xsl:value-of select="RecId"/>
                <xsl:text>&company=</xsl:text>
                <xsl:value-of select="DataAreaId"/>
            </xsl:attribute>
            <xsl:value-of select="SALESID"/>
        </a>
        <xsl:text>&nbsp;&nbsp;&nbsp;</xsl:text>
        <xsl:value-of select="PurchOrderFormNum"/>
        <xsl:text>&nbsp;&nbsp;&nbsp;</xsl:text>
        <xsl:value-of select="dataAreaId"/>
        <xsl:text>&nbsp;&nbsp;&nbsp;</xsl:text>
        <xsl:value-of select="RecId"/>
        <br/>
        <br/>
    </p>
</xsl:for-each>
</p>
</xsl:for-each>
</body>
</html>
</xsl:template>
</xsl:stylesheet>

1 个答案:

答案 0 :(得分:0)

一些事情:

  1. 案例很重要,因此请确保select属性中的路径与源XML相同。
  2. &nbsp;未声明实体,因此请使用十六进制或十进制引用。如果需要,您可以为nbsp创建实体声明。在示例中,我使用了十六进制引用。如果您想要一个nbsp。
  3. 声明的示例,请与我们联系
  4. 除非你在CDATA部分,否则你不能使用文字&。它更容易使用&amp;。我在示例中使用了&amp;。如果您想使用CDATA,请执行以下操作:<xsl:text><![CDATA[&company=]]></xsl:text>
  5. XSLT 1.0

    <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
        <xsl:output method="html"/>
        <xsl:template match="/">
            <html>
                <body>
                    <xsl:for-each select="ELEMENT">
                        <p>
                            <xsl:for-each select="RECORD">
                                <p>
                                    <xsl:value-of select="COUNTER"/>
                                    <xsl:text> : </xsl:text>
                                    <a>
                                        <xsl:attribute name="href">
                                            <xsl:text>dynamics://</xsl:text>
                                            <xsl:value-of select="DRILLDOWNGROUP"/>
                                            <xsl:text>?DrillDown_0?tableid=</xsl:text>
                                            <xsl:value-of select="TableId"/>
                                            <xsl:text>&amp;field=RecId&amp;value=</xsl:text>
                                            <xsl:value-of select="RecId"/>
                                            <xsl:text>&amp;company=</xsl:text>
                                            <xsl:value-of select="dataAreaId"/>
                                        </xsl:attribute>
                                        <xsl:value-of select="SalesId"/>
                                    </a>
                                    <xsl:text>&#xA0;&#xA0;&#xA0;</xsl:text>
                                    <xsl:value-of select="PurchOrderFormNum"/>
                                    <xsl:text>&#xA0;&#xA0;&#xA0;</xsl:text>
                                    <xsl:value-of select="dataAreaId"/>
                                    <xsl:text>&#xA0;&#xA0;&#xA0;</xsl:text>
                                    <xsl:value-of select="RecId"/>
                                    <br/>
                                    <br/>
                                </p>
                            </xsl:for-each>
                        </p>
                    </xsl:for-each>
                </body>
            </html>
        </xsl:template>
    </xsl:stylesheet>
    

    <强>输出

    <html>
       <body>
          <p>
             <p>1 : <a href="dynamics://TEST?DrillDown_0?tableid=40276&amp;field=RecId&amp;value=5637144826&amp;company=XXX">SO090040717</a>&nbsp;&nbsp;&nbsp;113657&nbsp;&nbsp;&nbsp;XXX&nbsp;&nbsp;&nbsp;5637144826<br><br></p>
          </p>
       </body>
    </html>