我有一个关于xsl的问题。我有一个巨大的xsl文件(+4000行:p),我想在不同的部分分割文件。我使用xsl文件来映射BizTalk中的某些模式,如果我将它分成几部分,它将更具性能,因此我可以重新使用这些部分。无论如何,不介意BizTalk的东西,我怎么能从我的主要xsl文件引用到不同的部分?xsl引用外部xsl文件
例:
<?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
好问题(+1)。请参阅我的答案,以获取专门针对使用多文件XSLT转换而设计的xslt指令, – 2010-10-07 18:59:35
除了@LarsH和@Dimitre的良好答案之外,您应该注意,此转换的设计很糟糕。这只是一种身份转换,可能带有一些剥离或绕过的元素。这可能会更短! – 2010-10-07 20:29:55