EXISTS
скажет Вам, возвратил ли запрос какие-либо результаты. например:
SELECT *
FROM Orders o
WHERE EXISTS (
SELECT *
FROM Products p
WHERE p.ProductNumber = o.ProductNumber)
IN
используется для сравнения одного значения с несколькими и может использовать литеральные значения, как это:
SELECT *
FROM Orders
WHERE ProductNumber IN (1, 10, 100)
можно также использовать результаты запроса с IN
пункт, как это:
SELECT *
FROM Orders
WHERE ProductNumber IN (
SELECT ProductNumber
FROM Products
WHERE ProductInventoryQuantity > 0)
Пару лет назад я изучал варианты. Вот краткий список: iTextSharp, SharpPDF, Report.NET, NFop и Siberix Report Writer. В конечном итоге я выбрал Siberix, но теперь думаю, что iTextSharp был бы лучшим выбором. Если это полезно, вы можете узнать больше здесь .
Я использовал iText (с открытым исходным кодом) пару раз около 2 лет назад, но я бы не рекомендовал это. Основная причина - отсутствие документации, и мне действительно не нравится API, он просто кажется устаревшим, устанавливая глобальные переменные перед вызовом функций.
Какова причина, по которой вам нужно использовать XSL-FO? Я также использовал ABC-pdf (коммерческий), который позволяет пользователю преобразовывать HTML-страницы (включая таблицы стилей) в документы pdf, или вы можете использовать простой и документированный API.
Раньше я использовал генератор PDF Ibex . Я был вовлечен в проект, у которого уже была лицензия на это, так что у меня действительно не было другого выбора. Сначала я подумал, что это громоздко, но со временем я привык к тому, как это работает.
Я бы порекомендовал вам также использовать какой-нибудь хороший редактор XML / XSL для тестирования XSL / XPath. XML Copy Editor - хороший бесплатный редактор с открытым исходным кодом.