3

使用下面的 XML,我想知道如何获取 case_id 节点中文本的值作为下面 xsl 表中隐藏输入标记的属性。这可能吗?

<?xml version="1.0" encoding="utf-8"?>
<?xml-stylesheet type="text/xsl" href="data.xsl"?>
<NewDataSet>
<Cases>
<Case>
<case_id>30</case_id>
...
...
</Case>
</Cases>
</NewDataset>
<?xml version="1.0" encoding="iso-8859-1"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="/">
<input type="hidden" name="case_num" value="?"/>
</xsl:template>
</xsl:stylesheet>
4

5 回答 5

5

试试这个

<?xml version="1.0"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
  <xsl:template match="/">
    <input type="hidden" name="case_num">
      <xsl:attribute name="value">
        <xsl:value-of select="/NewDataSet/Cases/Case/case_id/text()"/>
      </xsl:attribute>
    </input>
  </xsl:template>
</xsl:stylesheet>

或者你可以像这样内联

<?xml version="1.0"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
  <xsl:template match="/">
    <input type="hidden" name="case_num" value="{/NewDataSet/Cases/Case/case_id/text()}"/>
  </xsl:template>

于 2008-12-02T15:48:18.517 回答
4

只需将您的 XSLT 更改为此,这假定您只有 1 个 case_id,否则,您将需要使用更具体的模板匹配,并删除我用作示例的 XPATH 值中的一些路径。

<input type="hidden" name="case-num">
    <xsl:attribute name="value">
        <xsl:value-of select="/NewDataSet/Cases/Case/case_id" />
    </xsl:attribute>
</input>
于 2008-12-02T15:47:51.637 回答
2

您需要使用一些更具体的匹配来扩展您的 XSLT。

以下应输出input包含case_id每个Case. 我假设case_id每个Case. 我已经尽量使 XSLT 尽可能明确,但如果您不想这样做,则不需要在实现中如此精确。

 <xsl:template match="/">
   <xsl:apply-templates />
 </xsl:template>

 <xsl:template match="Case">
    <xsl:element name="input">
       <xsl:attribute name="type">
          <xsl:text>hidden</xsl:text>
       </xsl:attribute>
       <xsl:attribute name="name">
          <xsl:text>case_num</xsl:text>
       </xsl:attribute>
       <xsl:attribute name="value">
          <xsl:value-of select="case_id"/>
       </xsl:attribute>
    </xsl:element>
 </xsl:template>
于 2008-12-02T15:47:47.957 回答
2

只需像这样使用 AVT(属性值模板):

<input type="hidden" name="case_num" value="{*/*/*/case_id}"/>
于 2008-12-02T21:42:08.973 回答
0

我将其更改为:

<input type="hidden" name="case-num">
    <xsl:attribute name="value">
        <xsl:value-of select="case_id" />
    </xsl:attribute>
</input>

因为它在 foreach 循环中。谢谢大家,这很管用!

于 2008-12-02T17:25:13.873 回答