Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/xslt/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用XSLT从XML文档检索数据,以便在ASP.NET数据网格中使用?_Xslt - Fatal编程技术网

如何使用XSLT从XML文档检索数据,以便在ASP.NET数据网格中使用?

如何使用XSLT从XML文档检索数据,以便在ASP.NET数据网格中使用?,xslt,Xslt,我无法使用XSLT将xml转换回转换格式的xml,下面是我的xml: <?xml version="1.0" encoding="UTF-8" ?> <DOCUMENTS> <DOCUMENTS_INFO DOCUMENT_COUNT="8" /> <DOCUMENT_GROUP NAME="Invoices" DISPLAY_NAME="INVOICES"> <DOCUMENT> <FIELD> &

我无法使用XSLT将xml转换回转换格式的xml,下面是我的xml:

<?xml version="1.0" encoding="UTF-8" ?>
<DOCUMENTS>
<DOCUMENTS_INFO DOCUMENT_COUNT="8" />
  <DOCUMENT_GROUP NAME="Invoices" DISPLAY_NAME="INVOICES">
    <DOCUMENT>
      <FIELD>
<name>USER</name>
        <display_name>Deposited by</display_name>
        <value>machine</value>
      </FIELD>
      <FIELD>
        <name>DATE</name>
        <display_name>Archive date</display_name>
        <value>21/05/2009</value>
      </FIELD>
    </DOCUMENT>
    <DOCUMENT>
      <FIELD>
        <name>USER</name>
        <display_name>Deposited by</display_name>
        <value>machine</value>
      </FIELD>
      <FIELD>
        <name>DATE</name>
        <display_name>Archive date</display_name>
        <value>21/06/2009</value>
      </FIELD>
    </DOCUMENT>
  </DOCUMENT_GROUP>
</DOCUMENTS>

非常感谢

您根本不需要进行任何转换。如果您想将数据拉入数据集或其他内容以便显示它,那么只需要一点XPath

获取所有
文档
元素的XPath:

//DOCUMENT
XPath根据
名称
值获取一对
元素,该值基于
文档
元素:

FIELD[name = 'USER']/value
FIELD[name = 'DATE']/value
因此,根据解析XML所使用的技术,基本上需要对第一个表达式进行循环,然后对第一个循环的结果运行以下两个表达式。在XSL中,它将如下所示:

<xsl:template match="/">
  <xsl:for-each select="//DOCUMENT">
    <xsl:value-of select="FIELD[name = 'USER']/value"/>
    <xsl:text>|</xsl:text>
    <xsl:value-of select="FIELD[name = 'DATE']/value"/>
  </xsl:for-each>
</xsl:template>

|
就像任何事情一样,有不止一种方法可以做到这一点。您也可以使用模板:

<xsl:template match="/">
  <xsl:apply-templates select="//DOCUMENT" />
</xsl:template>
<xsl:template match="DOCUMENT">
  <xsl:value-of select="FIELD[name = 'USER']/value"/>
  <xsl:text>|</xsl:text>
  <xsl:value-of select="FIELD[name = 'DATE']/value"/>
</xsl:template>

|

这两种方法都将给出您作为示例给出的输出,但是您最好将XPath值直接读取到数据集中,或者编写自己的适配器将这些值提取出来并直接加载到datagrid中。

。。。问题到底是什么?
<xsl:template match="/">
  <xsl:apply-templates select="//DOCUMENT" />
</xsl:template>
<xsl:template match="DOCUMENT">
  <xsl:value-of select="FIELD[name = 'USER']/value"/>
  <xsl:text>|</xsl:text>
  <xsl:value-of select="FIELD[name = 'DATE']/value"/>
</xsl:template>