1

文字列を略語に置き換える方法を知りたいです。

私のXMLは以下のようになります

            <concept reltype="CONTAINS" name="Left Ventricular Major Axis Diastolic Dimension, 4-chamber view" type="NUM">
            <code meaning="Left Ventricular Major Axis Diastolic Dimension, 4-chamber view" value="18074-5" schema="LN" />
            <measurement value="5.7585187646">
              <code value="cm" schema="UCUM" />
            </measurement>
            <content>
              <concept reltype="HAS ACQ CONTEXT" name="Image Mode" type="CODE">
                <code meaning="Image Mode" value="G-0373" schema="SRT" />
                <code meaning="2D mode" value="G-03A2" schema="SRT" />
              </concept>
            </content>
          </concept>

私はxmlからいくつかの値を選択しています。

<xsl:value-of select="concept/measurement/code/@value"/>

今私が欲しいのは、cmをセンチメートルに置き換える必要があるということです。このような言葉がたくさんあります。略語用のxmlを用意して、それらから置き換えたいと思います。

ここで同様の例を1つ見ました。

略語を展開するための XSL でのマップの使用

しかし、ノードテキストを置き換えますが、テキストを属性として持っています。また、別の xsl:template を使用する代わりに、xsl:valueof select を使用してテキストを選択するときに、検索して置換できるとよいでしょう。助けてください。私はxsltが初めてです。

4

2 に答える 2

2

XSLT v "1.1" を作成しました。略語については、あなたが言及したように XML ファイルを作成しました。

略語.xml:

<Abbreviations>
  <Abbreviation>
    <Short>cm</Short>
    <Full>centimeter</Full>
  </Abbreviation>
  <Abbreviation>
    <Short>m</Short>
    <Full>meter</Full>
  </Abbreviation>
</Abbreviations>

XSLT:

<xsl:stylesheet version="1.1" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

  <xsl:output indent="yes" method="xml" />
  <xsl:param name="AbbreviationDoc" select="document('Abbreviation.xml')"/>

  <xsl:template match="/">
    <xsl:call-template name="Convert">
      <xsl:with-param name="present" select="concept/measurement/code/@value"/>
    </xsl:call-template>
  </xsl:template>  

  <xsl:template name="Convert">
    <xsl:param name="present"/>
    <xsl:choose>
      <xsl:when test="$AbbreviationDoc/Abbreviations/Abbreviation[Short = $present]">
        <xsl:value-of select="$AbbreviationDoc/Abbreviations/Abbreviation[Short = $present]/Full"/>
      </xsl:when>
      <xsl:otherwise>
        <xsl:value-of select="$present"/>
      </xsl:otherwise>
    </xsl:choose>
  </xsl:template>
</xsl:stylesheet>

入力:

あなたが与えたように<xsl:value-of select="concept/measurement/code/@value"/>

出力:

centimeter

この Abbreviation.xml を拡張して、略語の短い値と完全な値を保持し、現在の値を渡して「変換」テンプレートを呼び出して、目的の出力を取得するだけです。

于 2013-05-16T06:45:26.530 に答える