XSL:使用 XPath 选择器选择元素值

发布于 2024-12-02 05:26:15 字数 1119 浏览 2 评论 0原文

我有以下 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");

我使用的语法有什么问题达到目标?

苏丹

I've the following XML scheme and I want to select the 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>

I've the following code for transformation but nothing happens

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

C# code

XslTransform xs = new XslTransform();

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

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

What is wrong with the syntax I used to achieve the goal?

Sultan

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

め可乐爱微笑 2024-12-09 05:26:15

输入:

<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

Input:

<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>

Output:

10003000
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文