2014-01-27 33 views
0

我對XSLT更新,並且我正在努力爭取一點,以便正確格式化。我想輸出HTML基本上是這個樣子行:XSLT中的動態HREF使用屬性不能如預期的那樣工作

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> 

回答

0

有幾件事情:

  1. 案例重要的,所以一定01中的路徑屬性與源XML相同。
  2. &nbsp;實體nbsp未聲明,因此請使用十六進制或十進制引用。如果需要,您可以爲nbsp創建一個實體聲明。在這個例子中,我使用了十六進制引用。讓我知道你是否想要一個關於nbsp的聲明的例子。
  3. 除非您位於CDATA部分,否則不能使用文字&。取而代之,使用&amp;更容易。我在示例中使用了&amp;。如果你想使用CDATA,做這樣的事情:<xsl:text><![CDATA[&company=]]></xsl:text>

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> 
+0

精彩!現在測試這個,但是一個實體聲明的例子也會很棒!我應該知道文字'&'會是一個問題。儘管刪除了''區塊,'&nbsp'似乎仍然有效? –

+0

另外,無論如何強迫我的XSL來處理任何情況或只是不區分大小寫? –

相關問題