1

CCD XML ドキュメントを使用しています。次のようなデータが含まれています。

<tr ID="encounter17" >
    <td>09/18/2012</td>
    <td ID="type41">Office Visit</td>
    <td>Family Practice</td>
    <td>
        <paragraph>REDACTED</paragraph>
    </td>
    <td />
</tr>
<tr ID="encounter18" styleCode="altRow">
    <td>09/17/2012</td>
    <td ID="type42">Office Visit</td>
    <td>Family Practice</td>
    <td>
        <paragraph>REDACTED</paragraph>
    </td>
    <td />
</tr>

「標準」の CCD.xsl を使用して、これを HTML としてレンダリングしようとしています。Derived from HL7 Finland R2 Tyylitiedosto: Tyyli_R2_B3_01.xslt Updated by Calvin E. Beebe, Mayo Clinic - Rochester Mn.

ID を持つencounter17要素はレンダリングされますが、ID を持つ要素はencounter18レンダリングされません。この出力を見るとxsltproc、XSLT がstyleCode属性を認識しないために発生しています。のみBold, Italic, Underlineがサポートされます。

この XSLT を変更して、不明な styleCode を許容できるようにするにはどうすればよいですか?

<!--    Stylecode processing
  Supports Bold, Underline and Italics display-->
<xsl:template match="//n1:*[@styleCode]">

<xsl:if test="@styleCode='Bold'">
    <xsl:element name='b'>
        <xsl:apply-templates/>
    </xsl:element>
</xsl:if>

<xsl:if test="@styleCode='Italics'">
    <xsl:element name='i'>
        <xsl:apply-templates/>
    </xsl:element>
</xsl:if>

<xsl:if test="@styleCode='Underline'">
    <xsl:element name='u'>
        <xsl:apply-templates/>
    </xsl:element>
</xsl:if>

<xsl:if test="contains(@styleCode,'Bold') and contains(@styleCode,'Italics') and not (contains(@styleCode, 'Underline'))">
    <xsl:element name='b'>
        <xsl:element name='i'>
            <xsl:apply-templates/>
        </xsl:element>
    </xsl:element>
</xsl:if>

<xsl:if test="contains(@styleCode,'Bold') and contains(@styleCode,'Underline') and not (contains(@styleCode, 'Italics'))">
    <xsl:element name='b'>
        <xsl:element name='u'>
            <xsl:apply-templates/>
        </xsl:element>
    </xsl:element>
</xsl:if>

<xsl:if test="contains(@styleCode,'Italics') and contains(@styleCode,'Underline') and not (contains(@styleCode, 'Bold'))">
    <xsl:element name='i'>
        <xsl:element name='u'>
            <xsl:apply-templates/>
        </xsl:element>
    </xsl:element>
</xsl:if>

<xsl:if test="contains(@styleCode,'Italics') and contains(@styleCode,'Underline') and contains(@styleCode, 'Bold')">
    <xsl:element name='b'>
        <xsl:element name='i'>
            <xsl:element name='u'>
                <xsl:apply-templates/>
            </xsl:element>
        </xsl:element>
    </xsl:element>
</xsl:if>

私はすでに追加しようとしました:

<xsl:if test="not (contains(@styleCode,'Italics')) and not (contains(@styleCode,'Underline')) and not (contains(@styleCode, 'Bold'))">
    <xsl:apply-templates/>
</xsl:if>

<tr>これは要素をレンダリングするだけのように見えますが、タグを扱う XSLT の部分には「落ちません」 。

4

1 に答える 1

2

何という恐ろしいコードでしょう!2.0 では、次のようにします。

<xsl:template match="n1:*[contains(@styleCode,'Bold')]" priority="100">
  <b><xsl:next-match/></b>
</xsl:template>

<xsl:template match="n1:*[contains(@styleCode,'Italic')]" priority="99">
  <i><xsl:next-match/></i>
</xsl:template>

<xsl:template match="n1:*[contains(@styleCode,'Underline')]" priority="98">
  <u><xsl:next-match/></u>
</xsl:template>

本質的にはそれだけです。これは、リストにないスタイルコードを無視します。

xsl:apply-imports を使用して 1.0 で同じことを行うことができますが、3 つのルールを個別のスタイルシート モジュールに含める必要があります。

于 2012-09-27T17:16:03.140 に答える