該XML具有要附加的字符串,要添加的字符串長度和字符的詳細信息。將字符附加到XSL中的字符串
<?xml version="1.0" encoding="ISO-8859-1"?>
<data>
<input>
<string>Auckland</string>
<len>12</len>
<char>#</char>
</input>
<input>
<string>Ohio</string>
<len>3</len>
<char>*</char>
</input>
</data>
我也有一個XSLT應(理想情況下)使用此邏輯: 而(字符串<指定長度的長度){ 串連(炭,字符串) } 別的 {截斷字符串與指定的長度}
<?xml version="1.0" encoding="ISO-8859-1"?>
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template name="append" match="/">
<xsl:param name="char"></xsl:param>
<xsl:param name="string"></xsl:param>
<xsl:param name="len"></xsl:param>
<xsl:value-of select="$string" />
<html>
<body>
<xsl:for-each select="data/input">
<xsl:choose>
<xsl:when test="string-length(string) < len" >
<xsl:call-template name="append">
<xsl:with-param name="char" select="char" />
<xsl:with-param name="string" select="concat(char,string)" />
<xsl:with-param name="len" select="len" />
</xsl:call-template>
</xsl:when>
</xsl:choose>
</xsl:for-each>
</body>
</html>
</xsl:template>
</xsl:stylesheet>
由於某些原因,循環未按預期工作。循環執行一次並顯示結果。
例如,對於第一個XML輸入,輸出應該是####奧克蘭,但結果是#Auckland。你能幫我找出這個代碼中的缺陷嗎?預先感謝您的幫助。
你在字段參數('')中傳遞一個值,但期望字符串參數(''),所以你永遠不會使用你的通過。 –
Pawel
這是一個錯字。剛糾正它。 o/p正如之前所述#奧克蘭而不是####奧克蘭 – user2241388
您需要使用$ len,而不是len等,但更基本的是,這沒有任何工作機會。每次通過循環,您都會生成另一組'html'和'body'標記。你需要分開處理「/」情況和做字符串填充的邏輯。 – 2013-04-03 17:34:21