ссылка xsl на внешний файл xsl - PullRequest
3 голосов
/ 07 октября 2010

У меня вопрос по xsl.У меня есть 1 огромный xsl-файл (+4000 строк: p), и я хотел бы разбить файл на несколько частей.Я использую файл xsl для сопоставления некоторых схем в BizTalk, и было бы более продуктивно, если бы я разбил его на части, чтобы я мог повторно использовать части.В любом случае, не обращайте внимания на материал BizTalk, как я могу сослаться из моего основного xsl-файла на разные части?

ex.:

    <?xml version="1.0" encoding="UTF-16"?>
    <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
      <xsl:output omit-xml-declaration="yes" method="xml" version="1.0" />
      <xsl:template match="/">
        <xsl:apply-templates select="/ns1:ADT_A01_231_GLO_DEF" />
      </xsl:template>
      <xsl:template match="/ns1:ADT_A01_231_GLO_DEF">
        <ns1:ADT_A01_25_GLO_DEF>
          <EVN_EventType>
                <xsl:if test="EVN_EventTypeSegment/EVN_1_EventTypeCode">
                  <EVN_1_EventTypeCode>
                    <xsl:value-of select="EVN_EventTypeSegment/EVN_1_EventTypeCode/text()" />
                  </EVN_1_EventTypeCode>
                </xsl:if>
                <EVN_2_RecordedDateTime>
                  <xsl:if test="EVN_EventTypeSegment/EVN_2_RecordedDateTime/TS_0_TimeOfAnEvent">
                    <TS_0_Time>
                      <xsl:value-of select="EVN_EventTypeSegment/EVN_2_RecordedDateTime/TS_0_TimeOfAnEvent/text()" />
                    </TS_0_Time>
                  </xsl:if>
                  <xsl:if test="EVN_EventTypeSegment/EVN_2_RecordedDateTime/TS_1_DegreeOfPrecision">
                    <TS_1_DegreeOfPrecision>
                      <xsl:value-of select="EVN_EventTypeSegment/EVN_2_RecordedDateTime/TS_1_DegreeOfPrecision/text()" />
                    </TS_1_DegreeOfPrecision>
                  </xsl:if>
                </EVN_2_RecordedDateTime>
          </EVN_EventType>
          <PID_PatientIdentification>
            <xsl:if test="PID_PatientIdentificationSegment/PID_1_SetIdPid">
              <PID_1_SetIdPid>
                <xsl:value-of select="PID_PatientIdentificationSegment/PID_1_SetIdPid/text()" />
              </PID_1_SetIdPid>
            </xsl:if>
           </PID_PatientIdentification>
        </ns1:ADT_A01_25_GLO_DEF>
      </xsl:template>
    </xsl:stylesheet>

Поэтому я хотел бы поставитьEVN_EventType "и" PID_PatientIdentification "в другом файле.Может быть, этот xsl не на 100% действителен, я что-то быстро скопировал / вставил, но вы поняли мою точку зрения?

Очень признателен за любую помощь.Thx

Ответы [ 3 ]

4 голосов
/ 07 октября 2010

Используйте <xsl:import> на верхнем уровне таблицы стилей, чтобы импортировать шаблоны из других таблиц стилей.Вы можете:

  • создать именованный шаблон для EVN_EventType, поместить его в EVN_EventType.xsl
  • создать еще один именованный шаблон для PID_PatientIdentification, который вы поместите в PID_PatientIdentification.xsl;
  • , затем импортируйте обе таблицы стилей в основную таблицу стилей
  • и вызовите оба шаблона из вашего <xsl:template match="/ns1:ADT_A01_231_GLO_DEF"> выше.
2 голосов
/ 07 октября 2010

Ознакомьтесь с инструкциями <xsl:import> и <xsl:include> .Тогда используйте полученные знания.

0 голосов
/ 19 июня 2018

Вы можете импортировать xsl из другого xsl, используя инструкцию import в основном xsl, чтобы использовать сопоставление с шаблоном из другого xsl (скажем, A.xsl). Элемент <xsl:import> имеет атрибут href, значение которого является ссылкой URI, идентифицирующей таблицу стилей для импорта.

<xsl:import href="A.xsl"/>
...