【问题标题】:XSL: select element value using XPath selectorXSL:使用 XPath 选择器选择元素值
【发布时间】:2011-11-06 16:24:40
【问题描述】:

我有以下 XML 方案,我想选择 Table>Row>Field with name = Amount

<?xml version="1.0" encoding="utf-8"?>
<Document>
  <PermitDocument code="01312" id="1">
    <Field name="DocumentType">Certificate</Field>
    ...
    ...
    <Table name="Products">
      <Row>
        <Field name="Amount">1000</Field>
        ...
        ...
      </Row>
      <Row>
        <Field name="Amount">3000</Field>
        ...
        ...
      </Row>
    </Table>
  </PermitDocument>
</Document>

我有以下转换代码,但没有任何反应

<xsl:for-each select="Document/PermitDocument/Table[@name='Products']/Row">
    <xsl:value-of select="Field[@name='Amount']" />
    ...
    ...
</xsl:for-each>

C#代码

XslTransform xs = new XslTransform();

try
{
  xs.Load("BCIS.xsl");
}
catch (XsltException e)
{
  Console.WriteLine(e.StackTrace);
  Console.ReadLine();
}

xs.Transform("BCIS.xml", "BCIS.html");

我用来实现目标的语法有什么问题?

苏丹

【问题讨论】:

    标签: xml xslt xpath css-selectors transformation


    【解决方案1】:

    输入:

    <Document>
        <PermitDocument code="01312" id="1">
            <Field name="DocumentType">Certificate</Field>
            <Table name="Products">
                <Row>
                    <Field name="Amount">1000</Field>
                </Row>
                <Row>
                    <Field name="Amount">3000</Field>
                </Row>
            </Table>
        </PermitDocument>
    </Document>
    

    XSLT:

    <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
        <xsl:output method="xml" indent="yes"/>
    
        <xsl:template match="/">
            <xsl:for-each select="Document/PermitDocument/Table[@name='Products']/Row">
                <xsl:value-of select="Field[@name='Amount']" />
            </xsl:for-each>
        </xsl:template>
    
    </xsl:stylesheet>
    

    输出:

    10003000
    

    【讨论】:

    • 我使用 HTML 模板而不是 xml,当我设置 &lt;xsl:output method="xml" indent="yes"/&gt; 时,输出丢失
    • @sultan,什么是“HTML 模板”?
    • 抱歉,XSLT 模板与 html 相结合
    • 如果您的代码不起作用,那么您需要向我们展示您的代码。
    • 对不起,这些东西是由我的模板中的&amp;nbsp; 符号引起的)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-03-18
    • 1970-01-01
    • 2012-03-18
    • 1970-01-01
    • 2022-07-01
    • 2020-08-06
    • 1970-01-01
    相关资源
    最近更新 更多