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
用于XML输出的SSRS XSLT-将属性子集转换为元素_Xslt - Fatal编程技术网

用于XML输出的SSRS XSLT-将属性子集转换为元素

用于XML输出的SSRS XSLT-将属性子集转换为元素,xslt,Xslt,我在将属性子集转换为子元素时遇到了麻烦。我的目标是有一个样式表,SSRS可以在形成输出时参考。 我看到的示例代码转换了所有属性,我不知道如何选择。 这是源文件,作为XML文件从SSRS输出 <?xml version="1.0" encoding="utf-8"?> <Report xsi:schemaLocation="_x0031_4Q_CSV http://MySSRSServer/ReportServer?%2FTRR%20Reports%2F14Q_CSV&a

我在将属性子集转换为子元素时遇到了麻烦。我的目标是有一个样式表,SSRS可以在形成输出时参考。 我看到的示例代码转换了所有属性,我不知道如何选择。 这是源文件,作为XML文件从SSRS输出

<?xml version="1.0" encoding="utf-8"?>
<Report xsi:schemaLocation="_x0031_4Q_CSV http://MySSRSServer/ReportServer?%2FTRR%20Reports%2F14Q_CSV&amp;rs%3ACommand=Render&amp;rs%3AFormat=XML&amp;rs%3ASessionID=uuurm045z4bsq2maejbbb045&amp;rc%3ASchema=True" Name="14Q_CSV" textbox1="14Q_CSV Period:201711 Publish Date: 12/7/2017 4:38:49 PM" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="_x0031_4Q_CSV">
  <table1>
    <Detail_Collection>
      <Detail ID_RSSD="1037003" D_DT="2017-11-30T00:00:00" CQSCS383="S0004260053" Transtype="I" CQSCF841="2020-01-23T00:00:00" CQSCP082="CUSIP" CQSCP083="31384YCC8" CQSCS370="N" CQSCP084="Agency MBS" CQSCP085="FN 537467" CQSCP087="50768.00" CQSCP088="53330.00" CQSCP089="50667.00" CQSCP090="12484343.00" CQSCP091="0.00" CQSCP092="AFS" CQSCP093="2017-11-30T00:00:00" CQSCP094="0.070363000000" CQSCP095="2000-04-01T00:00:00" CQSCS371="USD" CQSCHK21="105.2563040000" />
      <Detail ID_RSSD="1037003" D_DT="2017-11-30T00:00:00" CQSCS383="S0004260054" Transtype="I" CQSCF841="2020-01-23T00:00:00" CQSCP082="CUSIP" CQSCP083="31384YCD6" CQSCS370="N" CQSCP084="Agency MBS" CQSCP085="FN 537468" CQSCP087="96069.00" CQSCP088="106433.00" CQSCP089="96069.00" CQSCP090="12066524.00" CQSCP091="0.00" CQSCP092="AFS" CQSCP093="2017-11-30T00:00:00" CQSCP094="0.067115000000" CQSCP095="2000-04-01T00:00:00" CQSCS371="USD" CQSCHK21="110.7884470000" />
      <Detail ID_RSSD="1037003" D_DT="2017-11-30T00:00:00" CQSCS383="S0004260057" Transtype="I" CQSCF841="2020-01-23T00:00:00" CQSCP082="CUSIP" CQSCP083="31384YCH7" CQSCS370="N" CQSCP084="Agency MBS" CQSCP085="FN 537472" CQSCP087="133804.00" CQSCP088="151158.00" CQSCP089="134964.00" CQSCP090="6415504.00" CQSCP091="0.00" CQSCP092="AFS" CQSCP093="2017-11-30T00:00:00" CQSCP094="0.064967000000" CQSCP095="2000-04-01T00:00:00" CQSCS371="USD" CQSCHK21="111.9988700000" />
      <Detail ID_RSSD="1037003" D_DT="2017-11-30T00:00:00" CQSCS383="S0004260058" Transtype="I" CQSCF841="2020-01-23T00:00:00" CQSCP082="CUSIP" CQSCP083="31384YCJ3" CQSCS370="N" CQSCP084="Agency MBS" CQSCP085="FN 537473" CQSCP087="188500.00" CQSCP088="198238.00" CQSCP089="186974.00" CQSCP090="7054878.00" CQSCP091="0.00" CQSCP092="AFS" CQSCP093="2017-11-30T00:00:00" CQSCP094="0.074321000000" CQSCP095="2000-04-01T00:00:00" CQSCS371="USD" CQSCHK21="106.0240080000" />
      <Detail ID_RSSD="1037003" D_DT="2017-11-30T00:00:00" CQSCS383="S0004260059" Transtype="I" CQSCF841="2020-01-23T00:00:00" CQSCP082="CUSIP" CQSCP083="31384YCK0" CQSCS370="N" CQSCP084="Agency MBS" CQSCP085="FN 537474" CQSCP087="53662.00" CQSCP088="56159.00" CQSCP089="52828.00" CQSCP090="6033726.00" CQSCP091="0.00" CQSCP092="AFS" CQSCP093="2017-11-30T00:00:00" CQSCP094="0.079403000000" CQSCP095="2000-04-01T00:00:00" CQSCS371="USD" CQSCHK21="106.3062160000" />
      <Detail ID_RSSD="1037003" D_DT="2017-11-30T00:00:00" CQSCS383="S0004260060" Transtype="I" CQSCF841="2020-01-23T00:00:00" CQSCP082="CUSIP" CQSCP083="31384YCL8" CQSCS370="N" CQSCP084="Agency MBS" CQSCP085="FN 537475" CQSCP087="53958.00" CQSCP088="57002.00" CQSCP089="53518.00" CQSCP090="5710436.00" CQSCP091="0.00" CQSCP092="AFS" CQSCP093="2017-11-30T00:00:00" CQSCP094="0.076705000000" CQSCP095="2000-04-01T00:00:00" CQSCS371="USD" CQSCHK21="106.5098890000" />
    </Detail_Collection>
  </table1>
</Report>

我需要在细节节点中保留前四个属性,如图所示重命名节点,并将其余属性转换为细节节点的子元素

以下是期望的结果:


<?xml version="1.0" encoding="UTF-8" standalone="true"?>
<SCRTS_Data_Collect LAST_ASOF_TSTMP="2019-11-06T00:00:00.000" DATA_ASOF_TSTMP="2019-11-06T00:00:00.000">
    <SCRTS_Data_Collect_MS ID_RSSD="1037003" D_DT="2019-09-30T00:00:00" CQSCS383="S0010160276" TRANSTYPE="I">
        <CQSCF841>11/06/2019</CQSCF841>
        <CQSCP082>CUSIP</CQSCP082>
        <CQSCP083>36202K2Q7</CQSCP083>
        <CQSCS370>N</CQSCS370>
        <CQSCP084>Agency MBS</CQSCP084>
        <CQSCP085>G2 8883</CQSCP085>
        <CQSCP087>8917</CQSCP087>
        <CQSCP088>9008</CQSCP088>
        <CQSCP089>8911</CQSCP089>
        <CQSCP090>5200000</CQSCP090>
        <CQSCP091>0</CQSCP091>
        <CQSCP092>AFS</CQSCP092>
        <CQSCP093>09/30/2019</CQSCP093>
        <CQSCP094>0.07108</CQSCP094>
        <CQSCP095>10/07/2000</CQSCP095>
        <CQSCS371>USD</CQSCS371>
        <CQSCHK21>101.090333</CQSCHK21>
    </SCRTS_Data_Collect_MS>
</SCRTS_Data_Collect>

11/06/2019
库希普
36202K2Q7
N
机构房贷担保债券
G28883
8917
9008
8911
5200000
0
AFS
09/30/2019
0.07108
10/07/2000
美元
101.090333
我一直在使用的样式表具有以下代码:


  <!-- rule to copy everything else  xmlns="_x0031_4Q_CSV" -->
  <xsl:template match="*/@*" xmlns="_x0031_4Q_CSV">


    <xsl:element name="{name()}">
    <xsl:value-of select="."/>
    </xsl:element>


  <xsl:apply-templates/>  
  </xsl:template>

显然,这会将所有属性转换为元素。我已经放置了各种节点路径来代替*/@匹配,但是我没有得到任何结果,所以这显然是错误的


如果不清楚,请提前道歉。我已经有好几年没有使用XSLT了。

你的样式表很完整,你的输出也没有很好的解释,但是要将attibutes转换为元素,你可以进行类似的转换:

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
                xmlns:d="_x0031_4Q_CSV">
  <xsl:template match="node()|@*">
    <xsl:copy>
        <xsl:apply-templates select="node()|@*"/>
    </xsl:copy>
  </xsl:template>
  <xsl:template match="d:Detail">
    <xsl:variable name="white-list" select="@ID_RSSD|@D_DT|@CQSCS383|@Transtype"/>  
    <xsl:copy>
        <xsl:apply-templates select="$white-list"/>
        <xsl:apply-templates select="@*[count(.|$white-list)!=count($white-list)]" 
                             mode="element"/>
        <xsl:apply-templates select="node()"/>
    </xsl:copy>
  </xsl:template>
  <xsl:template match="@*" mode="element">
    <xsl:element name="{name()}">
        <xsl:value-of 
            select="."/>
    </xsl:element>
  </xsl:template>
</xsl:stylesheet>

输出:

<Report xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xmlns="_x0031_4Q_CSV"
        xsi:schemaLocation="_x0031_4Q_CSV http://MySSRSServer/ReportServer?%2FTRR%20Reports%2F14Q_CSV&amp;rs%3ACommand=Render&amp;rs%3AFormat=XML&amp;rs%3ASessionID=uuurm045z4bsq2maejbbb045&amp;rc%3ASchema=True"
        Name="14Q_CSV"
        textbox1="14Q_CSV Period:201711 Publish Date: 12/7/2017 4:38:49 PM">
  <table1>
      <Detail_Collection>
         <Detail ID_RSSD="1037003"
                 D_DT="2017-11-30T00:00:00"
                 CQSCS383="S0004260053"
                 Transtype="I">
            <CQSCF841 xmlns="">2020-01-23T00:00:00</CQSCF841>
            <CQSCP082 xmlns="">CUSIP</CQSCP082>
            <CQSCP083 xmlns="">31384YCC8</CQSCP083>
            <CQSCS370 xmlns="">N</CQSCS370>
            <CQSCP084 xmlns="">Agency MBS</CQSCP084>
            <CQSCP085 xmlns="">FN 537467</CQSCP085>
            <CQSCP087 xmlns="">50768.00</CQSCP087>
            <CQSCP088 xmlns="">53330.00</CQSCP088>
            <CQSCP089 xmlns="">50667.00</CQSCP089>
            <CQSCP090 xmlns="">12484343.00</CQSCP090>
            <CQSCP091 xmlns="">0.00</CQSCP091>
            <CQSCP092 xmlns="">AFS</CQSCP092>
            <CQSCP093 xmlns="">2017-11-30T00:00:00</CQSCP093>
            <CQSCP094 xmlns="">0.070363000000</CQSCP094>
            <CQSCP095 xmlns="">2000-04-01T00:00:00</CQSCP095>
            <CQSCS371 xmlns="">USD</CQSCS371>
            <CQSCHK21 xmlns="">105.2563040000</CQSCHK21>
         </Detail>
         <Detail ID_RSSD="1037003"
                 D_DT="2017-11-30T00:00:00"
                 CQSCS383="S0004260054"
                 Transtype="I">
            <CQSCF841 xmlns="">2020-01-23T00:00:00</CQSCF841>
            <CQSCP082 xmlns="">CUSIP</CQSCP082>
            <CQSCP083 xmlns="">31384YCD6</CQSCP083>
            <CQSCS370 xmlns="">N</CQSCS370>
            <CQSCP084 xmlns="">Agency MBS</CQSCP084>
            <CQSCP085 xmlns="">FN 537468</CQSCP085>
            <CQSCP087 xmlns="">96069.00</CQSCP087>
            <CQSCP088 xmlns="">106433.00</CQSCP088>
            <CQSCP089 xmlns="">96069.00</CQSCP089>
            <CQSCP090 xmlns="">12066524.00</CQSCP090>
            <CQSCP091 xmlns="">0.00</CQSCP091>
            <CQSCP092 xmlns="">AFS</CQSCP092>
            <CQSCP093 xmlns="">2017-11-30T00:00:00</CQSCP093>
            <CQSCP094 xmlns="">0.067115000000</CQSCP094>
            <CQSCP095 xmlns="">2000-04-01T00:00:00</CQSCP095>
            <CQSCS371 xmlns="">USD</CQSCS371>
            <CQSCHK21 xmlns="">110.7884470000</CQSCHK21>
         </Detail>
         <Detail ID_RSSD="1037003"
                 D_DT="2017-11-30T00:00:00"
                 CQSCS383="S0004260057"
                 Transtype="I">
            <CQSCF841 xmlns="">2020-01-23T00:00:00</CQSCF841>
            <CQSCP082 xmlns="">CUSIP</CQSCP082>
            <CQSCP083 xmlns="">31384YCH7</CQSCP083>
            <CQSCS370 xmlns="">N</CQSCS370>
            <CQSCP084 xmlns="">Agency MBS</CQSCP084>
            <CQSCP085 xmlns="">FN 537472</CQSCP085>
            <CQSCP087 xmlns="">133804.00</CQSCP087>
            <CQSCP088 xmlns="">151158.00</CQSCP088>
            <CQSCP089 xmlns="">134964.00</CQSCP089>
            <CQSCP090 xmlns="">6415504.00</CQSCP090>
            <CQSCP091 xmlns="">0.00</CQSCP091>
            <CQSCP092 xmlns="">AFS</CQSCP092>
            <CQSCP093 xmlns="">2017-11-30T00:00:00</CQSCP093>
            <CQSCP094 xmlns="">0.064967000000</CQSCP094>
            <CQSCP095 xmlns="">2000-04-01T00:00:00</CQSCP095>
            <CQSCS371 xmlns="">USD</CQSCS371>
            <CQSCHK21 xmlns="">111.9988700000</CQSCHK21>
         </Detail>
         <Detail ID_RSSD="1037003"
                 D_DT="2017-11-30T00:00:00"
                 CQSCS383="S0004260058"
                 Transtype="I">
            <CQSCF841 xmlns="">2020-01-23T00:00:00</CQSCF841>
            <CQSCP082 xmlns="">CUSIP</CQSCP082>
            <CQSCP083 xmlns="">31384YCJ3</CQSCP083>
            <CQSCS370 xmlns="">N</CQSCS370>
            <CQSCP084 xmlns="">Agency MBS</CQSCP084>
            <CQSCP085 xmlns="">FN 537473</CQSCP085>
            <CQSCP087 xmlns="">188500.00</CQSCP087>
            <CQSCP088 xmlns="">198238.00</CQSCP088>
            <CQSCP089 xmlns="">186974.00</CQSCP089>
            <CQSCP090 xmlns="">7054878.00</CQSCP090>
            <CQSCP091 xmlns="">0.00</CQSCP091>
            <CQSCP092 xmlns="">AFS</CQSCP092>
            <CQSCP093 xmlns="">2017-11-30T00:00:00</CQSCP093>
            <CQSCP094 xmlns="">0.074321000000</CQSCP094>
            <CQSCP095 xmlns="">2000-04-01T00:00:00</CQSCP095>
            <CQSCS371 xmlns="">USD</CQSCS371>
            <CQSCHK21 xmlns="">106.0240080000</CQSCHK21>
         </Detail>
         <Detail ID_RSSD="1037003"
                 D_DT="2017-11-30T00:00:00"
                 CQSCS383="S0004260059"
                 Transtype="I">
            <CQSCF841 xmlns="">2020-01-23T00:00:00</CQSCF841>
            <CQSCP082 xmlns="">CUSIP</CQSCP082>
            <CQSCP083 xmlns="">31384YCK0</CQSCP083>
            <CQSCS370 xmlns="">N</CQSCS370>
            <CQSCP084 xmlns="">Agency MBS</CQSCP084>
            <CQSCP085 xmlns="">FN 537474</CQSCP085>
            <CQSCP087 xmlns="">53662.00</CQSCP087>
            <CQSCP088 xmlns="">56159.00</CQSCP088>
            <CQSCP089 xmlns="">52828.00</CQSCP089>
            <CQSCP090 xmlns="">6033726.00</CQSCP090>
            <CQSCP091 xmlns="">0.00</CQSCP091>
            <CQSCP092 xmlns="">AFS</CQSCP092>
            <CQSCP093 xmlns="">2017-11-30T00:00:00</CQSCP093>
            <CQSCP094 xmlns="">0.079403000000</CQSCP094>
            <CQSCP095 xmlns="">2000-04-01T00:00:00</CQSCP095>
            <CQSCS371 xmlns="">USD</CQSCS371>
            <CQSCHK21 xmlns="">106.3062160000</CQSCHK21>
         </Detail>
         <Detail ID_RSSD="1037003"
                 D_DT="2017-11-30T00:00:00"
                 CQSCS383="S0004260060"
                 Transtype="I">
            <CQSCF841 xmlns="">2020-01-23T00:00:00</CQSCF841>
            <CQSCP082 xmlns="">CUSIP</CQSCP082>
            <CQSCP083 xmlns="">31384YCL8</CQSCP083>
            <CQSCS370 xmlns="">N</CQSCS370>
            <CQSCP084 xmlns="">Agency MBS</CQSCP084>
            <CQSCP085 xmlns="">FN 537475</CQSCP085>
            <CQSCP087 xmlns="">53958.00</CQSCP087>
            <CQSCP088 xmlns="">57002.00</CQSCP088>
            <CQSCP089 xmlns="">53518.00</CQSCP089>
            <CQSCP090 xmlns="">5710436.00</CQSCP090>
            <CQSCP091 xmlns="">0.00</CQSCP091>
            <CQSCP092 xmlns="">AFS</CQSCP092>
            <CQSCP093 xmlns="">2017-11-30T00:00:00</CQSCP093>
            <CQSCP094 xmlns="">0.076705000000</CQSCP094>
            <CQSCP095 xmlns="">2000-04-01T00:00:00</CQSCP095>
            <CQSCS371 xmlns="">USD</CQSCS371>
            <CQSCHK21 xmlns="">106.5098890000</CQSCHK21>
         </Detail>
      </Detail_Collection>
  </table1>
</Report>

2020-01-23T00:00:00
库希普
31384YCC8
N
机构房贷担保债券
FN 537467
50768
53330
50667
12484343
0
AFS
2017-11-30T00:00:00
0.070363000000
2000-04-01T00:00:00
美元
105.2563040000
2020-01-23T00:00:00
库希普
31384YCD6
N
机构房贷担保债券
FN 537468
96069
106433
96069
12066524
0
AFS
2017-11-30T00:00:00
0.067115000000
2000-04-01T00:00:00
美元
110.7884470000
2020-01-23T00:00:00
库希普
31384YCH7
N
机构房贷担保债券
FN 537472
133804
151158
134964
6415504
0
AFS
2017-11-30T00:00:00
0.064967000000
2000-04-01T00:00:00
美元
111.9988700000
2020-01-23T00:00:00
库希普
31384YCJ3
N
机构房贷担保债券
FN 537473
188500
198238
186974
7054878
0
AFS
2017-11-30T00:00:00
0.074321000000
2000-04-01T00:00:00
美元
106.0240080000
2020-01-23T00:00:00
库希普
31384YCK0
N
机构房贷担保债券
FN 537474
53662
56159
52828
6033726
0
AFS
2017-11-30T00:00:00
0.079403000000
2000-04-01T00:00:00
美元
106.3062160000
2020-01-23T00:00:00
库希普
31384YCL8
N
机构房贷担保债券
FN 537475
53958
57002
53518
5710436
0
AFS
2017-11-30T00:00:00
0.076705000000
2000-04-01T00:00:00
美元
106.5098890000

注意:属性应该在任何其他节点类型之前输出,Kaysian方法用于排除。

这很完美,Alejandro;谢谢现在我必须弄清楚如何合并名称更改。必须将元素重命名为“CRTS_Data_Collect_MS”才能输出,但我还没有看到一种方法可以与您编写的属性模板一起使用。@philhege您只需要将
xsl:copy
指令更改为
SCRTS_Data_Collect_MS
literal result元素。