簡體   English   中英

XSLT 2.0-遍歷Java對象列表

[英]XSLT 2.0 - iterate over a list of Java objects

我有一個XSL,用於創建XML的副本,但向XML中的某些元素添加了一些屬性。 XSL調用一個Java函數,該函數返回CInfo類型的對象的列表(java.util.List),該對象當前是一個非常簡單的類,定義如下:

public class CInfo {
    public int getNewVal() {
        return 12345;
    }
}

我現在在XSL中遇到以下代碼段的問題:

<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="2.0"
    xmlns:list="java.util.List"
    xmlns:saxon="http://saxon.sf.net/"
    xmlns:xs="http://www.w3.org/2001/XMLSchema"
    xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
    ...
    ...>

...
<xsl:variable name="infoList"
    select="up:computeUpdates($updator)"/>

<xsl:for-each select="$infoList">
    <xsl:variable name="cinfo" select="."/>
    <xsl:variable name="newVal" select="ci:getNewVal($cinfo)"/>
...
...
</xsl:for-each>

我驗證了XSL確實調用了computeUpdates() ,它返回僅包含一個CInfo類型實例的列表。 該問題發生在xsl:for-each處 ,該錯誤給出以下錯誤:

Error on line 89
  XPTY0019: Required item type of first operand of '/' is node(); supplied value has item
  type java:com.mproj.mpkg.CInfo
  at xsl:for-each (#76)
     processing "com.mproj.mpkg.."
  at xsl:apply-templates (#48)

XSL似乎無法以某種方式遍歷infoList 奇怪的是,我正在開發的代碼庫中的現有XSL具有非常相似的for-each ,並且能夠遍歷另一個類的Java對象列表(盡管類似於CInfo),並且似乎沒有任何問題。 我想念什么嗎? 使XSLT遍歷Java對象列表的標准過程是什么? 有什么例子可以幫助我嗎? 我嘗試在網絡上搜索此類循環的示例以及針對上述問題的可能解決方案,但到目前為止仍未成功。

您尚未向我們顯示出現錯誤的第89行。 我的猜測是它可能包含以下形式的表達式

$ infoList / XXXXX

之所以失敗,是因為(如錯誤消息所說明的)“ /”的lh操作數必須是節點序列。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM