【发布时间】:2015-01-13 10:08:10
【问题描述】:
我正在使用 XSL 1.0 和 Xpath 1.0。
我是 XSL 和 XPath 的新手,我正在尝试使用 Oracle JDeveloper 在 XSL 中做这件事。我正在根据“名字(强制)、姓氏(可以为空)和 emp_type(可以为空)”这三件事的组合从表中选择数据。我用来从表中检索数据的查询为提供的“名字、姓氏(可以为 null)和 emp_type(可以为 null)”和名字“Nina”选择数据。 “Nina”在表中没有姓氏,因为默认情况下需要检索它,但是它可能有也可能没有“emp_type” 我想要的是将数据分组到不同的块中,其中包含一个特定组合的数据名字、姓氏和emp_type”在应用转换后位于结果的一个节点下。从表中收集的数据如下所示:
来自表的数据:
<OutputCollection>
<Output>
<forename>Anna</forename>
<surname>Collins</surname>
<emp_type>Permanent</emp_type>
<off_type>PERM</off_type>
<descname>Description1</descname>
<desc>Description</desc>
<comment>comment1</comment>
</Output>
<Output>
<forename>Anna</forename>
<surname>Collins</surname>
<emp_type>Permanent</emp_type>
<off_type>PERM</off_type>
<descname>Description2</descname>
<desc>Description</desc>
<comment>comment2</comment>
</Output>
<Output>
<forename>Anna</forename>
<surname>Collins</surname>
<emp_type>Permanent</emp_type>
<off_type>PERM</off_type>
<descname>Description3</descname>
<desc>Description</desc>
<comment>comment3</comment>
</Output>
<Output>
<forename>Anna</forename>
<surname nil="true"/>
<emp_type>Permanent</emp_type>
<off_type>PERM</off_type>
<descname>Description4</descname>
<desc>Description</desc>
<comment>comment4</comment>
</Output>
<Output>
<forename>Anna</forename>
<surname nil="true"/>
<emp_type>Permanent</emp_type>
<off_type>PERM</off_type>
<descname>Description5</descname>
<desc>Description</desc>
<comment>comment5</comment>
</Output>
<Output>
<forename>Anna</forename>
<surname nil="true"/>
<emp_type>Permanent</emp_type>
<off_type>PERM</off_type>
<descname>Description6</descname>
<desc>Description</desc>
<comment>comment6</comment>
</Output>
<Output>
<forename>Anna</forename>
<surname nil="true"/>
<emp_type>Permanent</emp_type>
<off_type>PERM</off_type>
<descname>Description7</descname>
<desc>Description</desc>
<comment>comment7</comment>
</Output>
<Output>
<forename>Anna</forename>
<surname nil="true"/>
<emp_type>Permanent</emp_type>
<off_type>PERM</off_type>
<descname>Description8</descname>
<desc>Description</desc>
<comment>comment8</comment>
</Output>
<Output>
<forename>Anna</forename>
<surname nil="true"/>
<emp_type>Permanent</emp_type>
<off_type>PERM</off_type>
<descname>Description9</descname>
<desc>Description</desc>
<comment>comment9</comment>
</Output>
<Output>
<forename>Anna</forename>
<surname nil="true"/>
<emp_type nil="true"/>
<off_type nil="true"/>
<descname>Description10</descname>
<desc>Description</desc>
<comment>comment10</comment>
</Output>
<Output>
<forename>Anna</forename>
<surname nil="true"/>
<emp_type nil="true"/>
<off_type nil="true"/>
<descname>Description11</descname>
<desc>Description</desc>
<comment>comment11</comment>
</Output>
<Output>
<forename>Anna</forename>
<surname nil="true"/>
<emp_type nil="true"/>
<off_type nil="true"/>
<descname>Description12</descname>
<desc>Description</desc>
<comment>comment12</comment>
</Output>
<Output>
<forename>Nina</forename>
<surname nil="true"/>
<emp_type>Permanent</emp_type>
<off_type>PERM</off_type>
<descname>Description13</descname>
<desc>Description</desc>
<comment>comment13</comment>
</Output>
<Output>
<forename>Nina</forename>
<surname nil="true"/>
<emp_type>Permanent</emp_type>
<off_type>PERM</off_type>
<descname>Description14</descname>
<desc>Description</desc>
<comment>comment14</comment>
</Output>
<Output>
<forename>Nina</forename>
<surname nil="true"/>
<emp_type>Permanent</emp_type>
<off_type>PERM</off_type>
<descname>Description15</descname>
<desc>Description</desc>
<comment>comment15</comment>
</Output>
<Output>
<forename>Nina</forename>
<surname nil="true"/>
<emp_type>Permanent</emp_type>
<off_type>PERM</off_type>
<descname>Description</descname>
<desc>Description16</desc>
<comment>comment16</comment>
</Output>
<Output>
<forename>Nina</forename>
<surname nil="true"/>
<emp_type>Permanent</emp_type>
<off_type>PERM</off_type>
<descname>Description18</descname>
<desc>Description</desc>
<comment>comment18</comment>
</Output>
<Output>
<forename>Nina</forename>
<surname nil="true"/>
<emp_type>Permanent</emp_type>
<off_type>PERM</off_type>
<descname>Description19</descname>
<desc>Description</desc>
<comment>comment19</comment>
</Output>
<Output>
<forename>Nina</forename>
<surname nil="true"/>
<emp_type>Permanent</emp_type>
<off_type>PERM</off_type>
<descname>Description20</descname>
<desc>Description</desc>
<comment>comment20</comment>
</Output>
<Output>
<forename>Nina</forename>
<surname nil="true"/>
<emp_type>Permanent</emp_type>
<off_type>PERM</off_type>
<descname>Description21</descname>
<desc>Description</desc>
<comment>comment21</comment>
</Output>
<Output>
<forename>Nina</forename>
<surname nil="true"/>
<emp_type>Permanent</emp_type>
<off_type>PERM</off_type>
<descname>Description22</descname>
<desc>Description</desc>
<comment>comment22</comment>
</Output>
<Output>
<forename>Nina</forename>
<surname nil="true"/>
<emp_type nil="true"/>
<off_type nil="true"/>
<descname>Description23</descname>
<desc>Description</desc>
<comment>comment23</comment>
</Output>
<Output>
<forename>Nina</forename>
<surname nil="true"/>
<emp_type nil="true"/>
<off_type nil="true"/>
<descname>Description24</descname>
<desc>Description</desc>
<comment>comment24</comment>
</Output>
<Output>
<forename>Nina</forename>
<surname nil="true"/>
<emp_type nil="true"/>
<off_type nil="true"/>
<descname>Description25</descname>
<desc>Description</desc>
<comment>comment25</comment>
</Output>
</OutputCollection>
要求:
<Response_After_Applying_Transformation>
<Outputs>
<Output>
<forename>Anna</forename>
<surname>Collins</surname>
<emp_type>Permanent</emp_type>
<off_type>PERM</off_type>
<desc_groups>
<desc_group>
<descname>Description1</descname>
<desc>Description</desc>
<comment>comment1</comment>
</desc_group>
<desc_group>
<descname>Description2</descname>
<desc>Description</desc>
<comment>comment2</comment>
</desc_group>
<desc_group>
<descname>Description3</descname>
<desc>Description</desc>
<comment>comment3</comment>
</desc_group>
</desc_groups>
.
.
.
</Output>
<Output>
<forename>Anna</forename>
<surname/>
<emp_type>Permanent</emp_type>
<off_type>PERM</off_type>
<desc_groups>
<desc_group>
<descname>Description4</descname>
<desc>Description</desc>
<comment>comment4</comment>
</desc_group>
<desc_group>
<descname>Description5</descname>
<desc>Description</desc>
<comment>comment5</comment>
</desc_group>
<desc_group>
<descname>Description6</descname>
<desc>Description</desc>
<comment>comment6</comment>
</desc_group>
</desc_groups>
.
.
.
</Output>
<Output>
<forename>Anna</forename>
<surname/>
<emp_type/>
<off_type/>
<desc_groups>
<desc_group>
<descname>Description10</descname>
<desc>Description</desc>
<comment>comment10</comment>
</desc_group>
<desc_group>
<descname>Description11</descname>
<desc>Description</desc>
<comment>comment11</comment>
</desc_group>
<desc_group>
<descname>Description12</descname>
<desc>Description</desc>
<comment>comment12</comment>
</desc_group>
</desc_groups>
.
.
.
</Output>
<Output>
<forename>Nina</forename>
<surname/>
<emp_type>Permanent</emp_type>
<off_type>PERM</off_type>
<desc_groups>
<desc_group>
<descname>Description13</descname>
<desc>Description</desc>
<comment>comment13</comment>
</desc_group>
<desc_group>
<descname>Description14</descname>
<desc>Description</desc>
<comment>comment14</comment>
</desc_group>
<desc_group>
<descname>Description15</descname>
<desc>Description</desc>
<comment>comment15</comment>
</desc_group>
</desc_groups>
.
.
.
</Output>
<Output>
<forename>Nina</forename>
<surname/>
<emp_type/>
<off_type/>
<desc_groups>
<desc_group>
<descname>Description23</descname>
<desc>Description</desc>
<comment>comment23</comment>
</desc_group>
<desc_group>
<descname>Description24</descname>
<desc>Description</desc>
<comment>comment24</comment>
</desc_group>
<desc_group>
<descname>Description25</descname>
<desc>Description</desc>
<comment>comment25</comment>
</desc_group>
</desc_groups>
.
.
.
</Output>
</Outputs>
</Response_After_Applying_Transformation>
如果单个转换无法实现所有这些,请帮助我找出“名字、姓氏和 emp_type”的不同组合,以便我可以在另一个转换中使用它来获得所需的结果。
所需的中间响应:
<Intermediate_Response>
<Intermediate_Result>
<forename>Anna</forename>
<surname>Collins</surname>
<emp_type>Permanent</emp_type>
<off_type>PERM</off_type>
</Intermediate_Result>
<Intermediate_Result>
<forename>Anna</forename>
<surname/>
<emp_type>Permanent</emp_type>
<off_type>PERM</off_type>
</Intermediate_Result>
<Intermediate_Result>
<forename>Anna</forename>
<surname/>
<emp_type/>
<off_type/>
</Intermediate_Result>
<Intermediate_Result>
<forename>Nina</forename>
<surname/>
<emp_type>Permanent</emp_type>
<off_type>PERM</off_type>
</Intermediate_Result>
<Intermediate_Result>
<forename>Nina</forename>
<surname/>
<emp_type/>
<off_type/>
</Intermediate_Result>
</Intermediate_Response>
您的帮助将不胜感激。我会非常感谢你们。
【问题讨论】:
-
不需要中间步骤。方法如下:jenitennison.com/xslt/grouping/muenchian.html
-
我无法理解。请帮帮我,我已经读过了。如果您能让我明白这一点,我将非常感谢您。请提供一些链接,以便我可以在所有 XML 内容(如 xsl、xpath 等)方面做得更好。您能否告诉我如何使用 Muenchian 方法做到这一点。我会很感激的。
-
"我无法理解。" 太糟糕了。我自己不知道如何更好地解释它。尝试在 SO 上查看 Muenchian 分组实现的众多示例。
-
非常感谢。实际上我正在努力学习,但这对我来说很紧急,所以我把它放在这里。