0

我正在尝试从 XML 文档中选择一个企业的位置集合。此代码有效,但仅选择一项。所以,我的问题是:我可以对这段代码做些什么来使它适用于每个位置?

    <xsl:template match="/InstitutionAlias/InstitutionAliasExternalReferenceCollection">
  <InstitutionExternalReferenceCollection>    
    <xsl:for-each select="InstitutionAliasExternalReference">
      <InstitutionExternalReference>
        <ExternalReferenceIdentifier>
          <xsl:value-of select="ExternalReferenceIdentifier"/>
        </ExternalReferenceIdentifier>
      </InstitutionExternalReference>
    </xsl:for-each>
  </InstitutionExternalReferenceCollection>
</xsl:template>

这就是输出的样子

  <InstitutionExternalReferenceCollection>
- <InstitutionExternalReference>
  <ExternalReferenceIdentifier>Test1</ExternalReferenceIdentifier>
</InstitutionExternalReference>

- <InstitutionExternalReference>
  <ExternalReferenceIdentifier>Test2</ExternalReferenceIdentifier>
</InstitutionExternalReference>

这是一个示例 xml 文件。

  - <InstitutionAliasExternalReferenceCollection>
- <InstitutionAliasExternalReference>
  <ExternalReferenceIdentifier>Test1</ExternalReferenceIdentifier>
</InstitutionAliasExternalReference>
- <InstitutionAliasExternalReference>
  <ExternalReferenceIdentifier>Test2</ExternalReferenceIdentifier>
</InstitutionAliasExternalReference>

4

1 回答 1

1

像这样的东西?如果您确定每个企业只能有一个位置标识符(我不知道),则可以将其压缩,但我决定将事物分开到单独的模板中。

您可以在此 XMLPlayground上运行它(请参阅输出源)。

    <!-- kick things off -->
    <xsl:template match="BusinessCollection">
        <BusinessCollection>
            <xsl:apply-templates select='Business' />
        </BusinessCollection>
    </xsl:template>

    <!-- each business -->
    <xsl:template match='Business'>
        <Business>
            <xsl:apply-templates select='LocationIdentifier' />
        </Business>
    </xsl:template>

    <!-- each location identifier -->
    <xsl:template match='LocationIdentifier'>
        <LocationIdentifier>
            <xsl:value-of select='.' />
        </LocationIdentifier>
    </xsl:template>

</xsl:stylesheet>

您的预期输出提到Data了节点,但这些没有出现在您的 XSL 尝试中,所以我不确定那里的意图是什么。

于 2012-07-26T17:52:54.293 回答