【问题标题】:XSLT transform with xml name spaces I think i'm missing somethingXSLT 转换与 xml 名称空间我想我错过了一些东西
【发布时间】:2009-12-28 14:37:34
【问题描述】:

我想我在命名空间和 xml 方面遗漏了一些东西,我正在尝试使用 XSLT 转换 xml

输入

<?xml version="1.0" encoding="utf-8"?>
<MySomeObject xmlns:i="http://www.w3.org/2001/XMLSchema-instance">
<_x003C_Name_x003E_k__BackingField>Jon</_x003C_Name_x003E_k__BackingField>
    <_x003C_Id_x003E_k__BackingField i:nil="true"  />
</MySomeObject>

XSLT

<?xml version="1.0" encoding="us-ascii"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" 
xmlns:i="http://www.w3.org/2001/XMLSchema-instance">
  <xsl:template match="/">              
Name: <xsl:value-of select="MySomeObject/_x003C_Name_x003E_k__BackingField"/>
  </xsl:template>
</xsl:stylesheet>

给我预期的输出Name: Jon

然而

输入:

<?xml version="1.0" encoding="utf-8"?>
<MySomeObject xmlns:i="http://www.w3.org/2001/XMLSchema-instance"
 xmlns="http://schemas.datacontract.org/2004/07/My.Object.Name.Space">
<_x003C_Name_x003E_k__BackingField>Jon</_x003C_Name_x003E_k__BackingField>
    <_x003C_Id_x003E_k__BackingField i:nil="true"  />
</MySomeObject>

XSLT:

<?xml version="1.0" encoding="us-ascii"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:i="http://www.w3.org/2001/XMLSchema-instance" 
xmlns="http://schemas.datacontract.org/2004/07/My.Object.Name.Space">
  <xsl:template match="/">              
Name: <xsl:value-of select="MySomeObject/_x003C_Name_x003E_k__BackingField"/>
  </xsl:template>
</xsl:stylesheet>

不给我同样的输出,它只返回Name:

【问题讨论】:

    标签: xml xslt namespaces


    【解决方案1】:

    试试这个:

    <?xml version="1.0" encoding="us-ascii"?>
    <xsl:stylesheet version="1.0"
                    xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
                    xmlns:i="http://www.w3.org/2001/XMLSchema-instance" 
                    xmlns:other="http://schemas.datacontract.org/2004/07/My.Object.Name.Space">
      <xsl:template match="/">              
        Name:
        <xsl:value-of 
             select="other:MySomeObject/other:_x003C_Name_x003E_k__BackingField"/>
      </xsl:template>
    </xsl:stylesheet>
    

    【讨论】:

    • 那行得通,我没有意识到你在 :other 之后缩短了架构的值
    猜你喜欢
    • 2015-07-15
    • 1970-01-01
    • 2010-12-28
    • 2019-01-13
    • 2011-05-14
    • 1970-01-01
    • 2010-09-06
    • 2010-10-17
    • 2021-07-10
    相关资源
    最近更新 更多