一部のXSLレポートで問題が発生しています。基本的には、私はCSVにすべてを吐き出していますが、この部分はうまくいきますが、時には同じセルに2つの値を渡す必要があります。XSLを使用したCSVセルでのキャリッジリターン
私は、しかし、彼らは常に異なった細胞で終わる、2つの項目間の<xsl:text> </xsl:text>
と<xsl:text> </xsl:text>
を置く、ライン間<br />
を置く、<p>
タグ内の各文字列を入れて試してみました。
2つ以上のアイテムを1つのセルに入れ、各アイテム間に復帰するXSLの部分は次のとおりです。
<xsl:template name="replace-string">
<xsl:param name="text"/>
<xsl:param name="replace"/>
<xsl:param name="with"/>
<xsl:choose>
<xsl:when test="contains($text,$replace)">
<xsl:value-of select="substring-before($text,$replace)"/>
<xsl:value-of select="$with"/>
<xsl:call-template name="replace-string">
<xsl:with-param name="text"
select="substring-after($text,$replace)"/>
<xsl:with-param name="replace" select="$replace"/>
<xsl:with-param name="with" select="$with"/>
</xsl:call-template>
</xsl:when>
<xsl:otherwise>
<xsl:value-of select="$text"/>
</xsl:otherwise>
</xsl:choose>
<xsl:template name="getRoutingRules">
<xsl:param name="itemID" />
<xsl:for-each select="/aka-Architect/Schema/Relationships/OwnerTerm[@ID=$itemID]">
<xsl:if test="@Entity='Subject'">
<xsl:for-each select="./Routing_Rules/*">
<xsl:if test="@Entity='Routing Rules'">
<xsl:call-template name="replace-string">
<xsl:with-param name="text" select="@Name"/>
<xsl:with-param name="replace" select="'"'" />
<xsl:with-param name="with" select="''" />
</xsl:call-template>
<br />
<xsl:text>
</xsl:text>
</xsl:if>
</xsl:for-each>
</xsl:if>
</xsl:for-each>
全XSLは
<?xml version="1.0"?>
<!--CSV-->
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:s="http://www.stylusstudio.com/xquery">
<xsl:template match="/aka-Architect">
<html>
<head/>
<body>
<xsl:apply-templates select="Schema/Hierarchy/TopTerm"/>
<!--xsl:apply-templates/-->
</body>
</html>
</xsl:template>
<xsl:template name="GetTopTerm" match="Schema/Hierarchy/TopTerm">
<table>
<tr>
<td>
<xsl:text>BCS Path</xsl:text>
</td>
<td>
<xsl:text>Descriptor</xsl:text>
</td>
<td>
<xsl:text>Descriptor Type</xsl:text>
</td>
<td>
<xsl:text>Description</xsl:text>
</td>
<td>
<xsl:text>Routing Rules</xsl:text>
</td>
</tr>
<!--<xsl:call-template name="GetFunctions" />
<xsl:call-template name="GetActivities" />-->
<xsl:call-template name="GetSubjects" />
</table>
</xsl:template>
<!---Get Function -->
<xsl:template name="GetFunctions">
<xsl:for-each select="/aka-Architect/Entities/Function/Items">
<xsl:for-each select="./*">
<tr>
<td>
<xsl:value-of select=".//ixPath" />
</td>
<td>
<xsl:value-of select=".//Name"/>
</td>
<td>
<xsl:value-of select=".//BCSLevel"/>
</td>
<td>
<xsl:value-of select=".//Description"/>
</td>
</tr>
</xsl:for-each>
</xsl:for-each>
</xsl:template>
<!---Get Activity -->
<xsl:template name="GetActivities">
<xsl:for-each select="/aka-Architect/Entities/Activity/Items">
<xsl:for-each select="./*">
<tr>
<td>
<xsl:value-of select=".//ixPath" />
</td>
<td>
<xsl:value-of select=".//Name"/>
</td>
<td>
<xsl:value-of select=".//BCSLevel"/>
</td>
<td>
<xsl:value-of select=".//Description"/>
</td>
</tr>
</xsl:for-each>
</xsl:for-each>
</xsl:template>
<!---Get Subject -->
<xsl:template name="GetSubjects">
<xsl:for-each select="/aka-Architect/Entities/Subject/Items">
<xsl:for-each select="./*">
<tr>
<td>
<xsl:value-of select=".//ixPath" />
</td>
<td>
<xsl:value-of select=".//Name"/>
</td>
<td>
<xsl:value-of select=".//BCSLevel"/>
</td>
<td>
<xsl:value-of select=".//Description"/>
</td>
<td>
<xsl:call-template name="getRoutingRules">
<xsl:with-param name="itemID" select='@ID' />
</xsl:call-template>
</td>
</tr>
</xsl:for-each>
</xsl:for-each>
</xsl:template>
<!-- FIND ROUTING RULES -->
<xsl:template name="getRoutingRules">
<xsl:param name="itemID" />
<xsl:for-each select="/aka-Architect/Schema/Relationships/OwnerTerm[@ID=$itemID]">
<xsl:if test="@Entity='Subject'">
<xsl:for-each select="./Routing_Rules/*">
<xsl:if test="@Entity='Routing Rules'">
<p>
<xsl:call-template name="replace-string">
<xsl:with-param name="text" select="@Name"/>
<xsl:with-param name="replace" select="'"'" />
<xsl:with-param name="with" select="''" />
</xsl:call-template>
</p>
<xsl:text>
</xsl:text>
</xsl:if>
</xsl:for-each>
</xsl:if>
</xsl:for-each>
</xsl:template>
<!-- replace " with ' -->
<xsl:template name="replace-string">
<xsl:param name="text"/>
<xsl:param name="replace"/>
<xsl:param name="with"/>
<xsl:choose>
<xsl:when test="contains($text,$replace)">
<xsl:value-of select="substring-before($text,$replace)"/>
<xsl:value-of select="$with"/>
<xsl:call-template name="replace-string">
<xsl:with-param name="text"
select="substring-after($text,$replace)"/>
<xsl:with-param name="replace" select="$replace"/>
<xsl:with-param name="with" select="$with"/>
</xsl:call-template>
</xsl:when>
<xsl:otherwise>
<xsl:value-of select="$text"/>
</xsl:otherwise>
</xsl:choose>
</xsl:template>
</xsl:stylesheet>
<!-- (c) 2016. CorpMem Business Solutions. All rights reserved.-->
どれを下回っていると、すべてのヘルプは大歓迎です。
乾杯、 ジョン
EDIT:要求で全XSLを追加しました。
あなたの質問はCSVですが、あなたのコードはHTMLテーブルを生成します。これらは2つの非常に異なるものです.HTMLで "キャリッジリターン"を生成するには、 '
'を出力する必要があります。 –
@ michael.hor257k彼らは非常に異なっています、はい、私はどのようにこのすべての作品が、私はHTMLテーブルのタグを使用しない場合はすべてが1つのセルに詰め込まれています。私は '
'を試しましたが、これはすべてを以下の新しいセルに置きます。 – JohZant
あなたが何を記述しているのか分かりません。結果をブラウザに表示されるHTMLページにするには、HTMLテーブルタグを使用する必要があります。 .csvテキストファイルが必要な場合は、直接作成しないでください。あなたの処理チェーンに残しておいたものがあるようです。 –