次の XML フラグメントがあります。
<svrl:successful-report test="."
location="/*[local-name()='ClinicalDocument']/*[local-name()='component']/*[local-name()='structuredBody']/*[local-name()='component'][1]/*[local-name()='section']">
値を取得して@location
、特殊文字" *[local-name()=' "
と" '] "
. つまり、出力を
/ClinicalDocument/component/structuredBody/component[1]/section
私は現在、この文字列置換テンプレートを使用しています:
<xsl:template name="string-replace-all">
<xsl:param name="text" />
<xsl:param name="replace" />
<xsl:param name="by" />
<xsl:choose>
<xsl:when test="contains($text, $replace)">
<xsl:value-of select="substring-before($text,$replace)" />
<xsl:value-of select="$by" />
<xsl:call-template name="string-replace-all">
<xsl:with-param name="text"
select="substring-after($text,$replace)" />
<xsl:with-param name="replace" select="$replace" />
<xsl:with-param name="by" select="$by" />
</xsl:call-template>
</xsl:when>
<xsl:otherwise>
<xsl:value-of select="$text" />
</xsl:otherwise>
</xsl:choose>
</xsl:template>
そして、このようなテンプレートを適用します
<xsl:call-template name="string-replace-all">
<xsl:with-param name="text" select="@location"/>
<xsl:with-param name="replace" select="'[local-name()='"/>
<xsl:with-param name="by" select="''"/>
</xsl:call-template>
それはこの結果を与えるだけです:
/*'ClinicalDocument']/*'component']/*'structuredBody']/*'component'][1]/*'section']
必要な出力を取得するにはどうすればよいですか?