如何使用命名空间从XML中选择?

前端之家收集整理的这篇文章主要介绍了如何使用命名空间从XML中选择?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我有一个 XML文档,如:::
<?xml version="1.0" encoding="utf-8"?>
<?mso-application progid="Excel.Sheet"?>
<Workbook xmlns:ss="urn:schemas-microsoft-com:office:spreadsheet"
          xmlns:o="urn:schemas-microsoft-com:office:office"
          xmlns:x="urn:schemas-microsoft-com:office:excel"
          xmlns="urn:schemas-microsoft-com:office:spreadsheet">
  <Worksheet ss:Name="Worksheet1">
    <Table>
      <Column ss:Width="100"></Column>

      <Row>
        <Cell ss:Index="1" ss:StyleID="headerStyle">
          <Data ss:Type="String">Submitted By</Data>
        </Cell>
      </Row>
      <Row>
        <Cell ss:Index="1" ss:StyleID="alternatingItemStyle">
          <Data ss:Type="String">Value1-0</Data>
        </Cell>
      </Row>
    </Table>
    <AutoFilter xmlns="urn:schemas-microsoft-com:office:excel"
                x:Range="R1C1:R1C5"></AutoFilter>
  </Worksheet>
</Workbook>

问题是当尝试选择行时

<xsl:for-each select="//Row">
    <xsl:copy-of select="."/>
  </xsl:for-each>

它不匹配我删除了所有的名称间距,它工作正常.那么,如何获得“选择”来匹配行?

在XSLT中为命名空间声明一个命名空间前缀,然后选择使用该前缀:
<xsl:stylesheet ... xmlns:os="urn:schemas-microsoft-com:office:spreadsheet">
  ...   
  <xsl:for-each select="//os:Row">
    ...
  </xsl:for-each>
  ...
</xsl:stylesheet>

这通常导致易于阅读的XPath.但是,XSLT / XPath工具生成以下等效代码

<xsl:for-each select="//*[local-name()='Row' = and namespace-uri()='urn:schemas-microsoft-com:office:spreadsheet']">
   ...
</xsl:for-each>

猜你在找的XML相关文章