XSLT copy-of select不会复制xslt 1.0中的所有属性

时间:2014-02-09 09:45:24

标签: xslt

我正在使用这个xslt 1.0

<xsl:copy-of select="//row[@type='data']/column/item/content/div/select/option[@selected='selected'][. = 'Home']/../@*"/>

它没有复制'select'元素的所有属性。

我的xml是

<row type="data">
  <column>
    <item>
      <content>
        <div id='win0divDERIVED_SS_PD_PHONE_TYPE$2'>
          <select name='DERIVED_SS_PD_PHONE_TYPE$2' id='DERIVED_SS_PD_PHONE_TYPE$2' tabindex='57' size='1' class='PSDROPDOWNLIST' style='width:221px; ' onchange="if (document.readyState == 'complete') addchg_win0(this);submitAction_win0(this.form,this.name);">
            <option value="BUSN">Business</option>
            <option value="CAMP">Campus</option>
            <option value="DORM">Dormitory</option>
            <option value="FAX">FAX</option>
            <option value="HOME" selected='selected'>Home</option>
          </select>
        </div>
      </content>
    </item>
  </column>
</row>

有什么想法吗?我犯了哪些错误? PLS

我正在使用saxon处理器并期待HTML输出,特定的select元素应该在输出的输入中重现。我不知道我需要仔细检查的地方?任何帮助?

2 个答案:

答案 0 :(得分:0)

在XSLT之后使用:

<xsl:stylesheet version='1.0' xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="/">
    <root>
        <xsl:copy-of select="//row[@type='data']/column/item/content/div/select/option[@selected='selected'][. = 'Home']/../@*"/>
    </root>
</xsl:template>
</xsl:stylesheet>

并获得以下输出:

<?xml version="1.0" encoding="UTF-8"?>
<root name="DERIVED_SS_PD_PHONE_TYPE$2" id="DERIVED_SS_PD_PHONE_TYPE$2" tabindex="57" size="1" class="PSDROPDOWNLIST" style="width:221px; " onchange="if (document.readyState == 'complete') addchg_win0(this);submitAction_win0(this.form,this.name);"/>

答案 1 :(得分:0)

如果您尝试重现该select元素(而不仅仅是其属性),则使用copy-of的适当路径为:

<xsl:copy-of select="//row[@type='data']/column/item/content/div/select
                                         [option[@selected='selected'] = 'Home']"/>

在你的问题中,你说它并没有复制“所有”属性。这是否意味着它正在复制某些属性而不是其他属性?你究竟在观察什么?