2010-10-05 4 views
3

Я создаю новый API для существующей службы. Методы в ней будут вызваны из с в XSLT как .net-расширения, но я вижу, что мне нужно использовать один и тот же API для выполнения jQuery .net XML.Выбор API, должен ли я возвращать XPathNavigator или XmlDocument

Я занимался тем, что лучше всего писать всю ночь. Чтобы он был XSLT дружественным, я верну XML в объект XPathNavigator, чтобы XSLT мог работать с ним сразу (вместо того, чтобы преобразовывать его в узел, установленный в XSLT. Но XPathNavigators заставляют меня дрожать, если вы используете их изнутри .net и я бы предпочел использовать XmlDocument (или XDocument) в любой день в течение XPathNavigator.

Так выбор, выбор, что вернуться?

Моя текущая мысль написать все это использовать XmlDocuments, а затем написать Wrapper, который будет использоваться XSLT, это просто вызовет основной API, а затем сгенерирует XPathNavigator из возвращаемого XmlDocument. Его еще несколько обручей, чтобы перепрыгнуть, но были бы самыми гибкими.

Любые мысли о моих рассуждениях или если у вас есть какие-то лучшие предложения.

Приветствие

Пит

+0

Мммм ... Я не думаю, что это вопрос XSLT. Кроме того, это выглядит очень субъективно: «Я бы скорее использовал XmlDocument (или XDocument) в любой день над XPathNavigator' без каких-либо требований или случаев использования. – 2010-10-05 21:45:18

+0

Я добавил тэг «xslt», как и после пользователей .net с опытом xslt, который знал бы, как писать расширения .net с учетом xslt. Да, его субъективность, поскольку я не знаю, с каким путем идти с ней и ищу руководство. –

ответ

4

Методы, которые принимают или возвращают XML должны способствовать возвращение XmlReader или XPathNavigator, если пользователь не ожидается, чтобы иметь возможность редактировать XML- данных, в этом случае следует использовать XmlDocument.

Источник: Best Practices for Representing XML in the .NET Framework (§ Методы, которые принимают XML Input или Return XML в качестве выходного сигнала)

+0

Великий найти полищук. Благодарю. –

+0

@Pete, добро пожаловать! –

2

Я не смотрел через весь API, но XmlDocument : XmlNode : IXPathNavigable

И, кажется, большинство функций XslTransform имеют перегрузки, которые принимают IXPathNavigable.

Итак, проверьте, покрывает ли это то, что вам нужно, но возврат IXPathNavigable может быть изящным решением.

Семейство XDocument не очень удобно XSLT.

Смежные вопросы