![](/img/trans.png)
[英]Transformation Performance XML>XSL>XML vs XML>JAXB>XML
[英]Java XSL/XML JAXB
我目前正在尝试创建可以由4种可能的类型组成的旅行路线。 这些是航班,住宿,游轮和其他(租车等)。
我将这些值从MySQL数据库加载到XML(一切正常)中,然后将使用XSL和FOP将其转换为PDF。
我正在尝试锻炼满足我的需求构造xml的最佳方法,基本上我希望它在PDF中看起来像这样
22NOV London to JFK
........
22NOV Hilton Hotel, New York
........
25NOV JFK to London
.......
我最好像这样构造xml并使用xsl分组进行转换吗
<itinerary>
<flights>
<flightDate>...</flightDate>
..........
</flights>
<accommodation>
<accommodationDate>.....</accommodationDate>
.........
</accommodation>
<cruise>......</cruise>
.......
或像这样
<itinerary>
<leg date ="">
<flights>.....</flights>
<accommodation>......</accommodation>
<cruise>......</cruise>
.......
</leg>
<leg date = "">
......
</leg>
最好使用java / mysql整理分组或xsl吗? 哪一种方法更好? 非常感谢您的帮助,希望这是有意义的。
更新:
这是用于获取航班详细信息的SQL,例如巡航,住宿等。
SELECT
flightDate, air1.airportName, air2.airportName,
flightNumber, departureTime, arrivalTime
FROM itinerary
LEFT JOIN flights ON flights.itineraryID = itinerary.itineraryID
LEFT JOIN airports air1 ON air1.airportID = flights.flightFrom
LEFT JOIN airports air2 ON air2.airportID = flights.flightTo
LEFT JOIN bookings ON itinerary.bookingID = bookings.bookingID
WHERE bookingRef='" + bookingRef + "'";
在SQL编辑器(SQLYog)中,此操作返回的结果很好,在java中,带有系统输出的情况也很好,但在编组其最后一条记录时,只能适当次数地返回。 (我认为是结构性问题)。
真正的问题是,我最好将所有查询归为一个而不是四个分开,因为它们非常相似吗? 使用外部/右连接等(被这些混淆)?
自从我做SQL已有很长时间了。
进一步更新:
将sql更改为以下内容,似乎更接近所需的结果,但未定义第二个表列的名称,将它们显示在其他表列中。
SELECT
flightDate, air1.airportName, air2.airportName, flightNumber,
departureTime, arrivalTime
FROM itinerary
LEFT OUTER JOIN
flights ON itinerary.itineraryID = flights.itineraryID
LEFT JOIN
airports AS air1 ON air1.airportID = flights.flightFrom
LEFT JOIN
airports AS air2 ON air2.airportID = flights.flightTo
LEFT JOIN
bookings ON bookings.bookingID = itinerary.bookingID
WHERE
bookings.bookingRef = '000001'
UNION
SELECT
accommodationDate, accommodationName, duration, roomType, boardBasis,
notes
FROM
itinerary
LEFT OUTER JOIN
accommodation ON itinerary.itineraryID = accommodation.itineraryID
LEFT JOIN
bookings ON bookings.bookingID = itinerary.bookingID
WHERE
bookings.bookingRef = '000001';
任何帮助表示赞赏。
如果您创建行程的第二个XML版本( /itinerary/leg/<resource>
),则因为数据结构和打印结构匹配,所以创建打印版本将更加容易。
但是,也许在查询数据库时更容易创建第一个版本。
最后,您需要确定哪个更容易编码。 SQL最有可能比XSL更好地进行分组。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.