gpt4 book ai didi

Java XSL/XML JAXB

转载 作者:行者123 更新时间:2023-11-30 22:35:19 26 4
gpt4 key购买 nike

我目前正在尝试创建一个可以由 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 更擅长分组。

关于Java XSL/XML JAXB,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32704152/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com