Это вопрос из двух частей:
1) Я использую функцию документа XSLT для получения XML из конечной точки REST во время преобразования.Это прекрасно работает, если я добавлю схему в URI, то есть document('http://...')
.Тем не менее, окончательный выпуск сайта, над которым я работаю, может быть защищенным или недоступным (https).Чтобы компенсировать это, можно ли использовать относительный URI, например, document('//...')
в функции документа XSLT, как если бы вы использовали другие ресурсы, такие как изображения и т. Д.?
Я пытаюсь сделать это с помощьюнативный .NET XsltCompiledTransform
и получение следующей ошибки: "Invalid URI: The hostname could not be parsed."
Это ограничение в .NET и достижимо с помощью Saxon или другого процессора 2.0 или это просто невозможно?
ОБНОВЛЕНИЕ
Исключением является XsltTransformException
с внутренним UriFormatException
со следующими трассами стека:
at System.Xml.Xsl.Runtime.XmlQueryContext.GetDataSource(String uriRelative, String uriBase)
at <xsl:template match="Nomination">(XmlQueryRuntime {urn:schemas-microsoft-com:xslt-debug}runtime, XPathNavigator {urn:schemas-microsoft-com:xslt-debug}current)
at <xsl:template match="/">(XmlQueryRuntime {urn:schemas-microsoft-com:xslt-debug}runtime, XPathNavigator {urn:schemas-microsoft-com:xslt-debug}current)
at Root(XmlQueryRuntime {urn:schemas-microsoft-com:xslt-debug}runtime)
at Execute(XmlQueryRuntime {urn:schemas-microsoft-com:xslt-debug}runtime)
at System.Xml.Xsl.XmlILCommand.Execute(Object defaultDocument, XmlResolver dataSources, XsltArgumentList argumentList, XmlSequenceWriter results)
at System.Xml.Xsl.XmlILCommand.Execute(Object defaultDocument, XmlResolver dataSources, XsltArgumentList argumentList, XmlWriter writer)
at System.Xml.Xsl.XslCompiledTransform.Transform(IXPathNavigable input, XsltArgumentList arguments, XmlWriter results, XmlResolver documentResolver)
at System.Xml.Xsl.XslCompiledTransform.Transform(IXPathNavigable input, XsltArgumentList arguments, XmlWriter results)
at AAFC.Web.XsltView.Render(ViewContext viewContext, TextWriter writer)
Внутренняя трассировка стека:
at System.Uri.CreateThis(String uri, Boolean dontEscape, UriKind uriKind)
at System.Uri.CreateUri(Uri baseUri, String relativeUri, Boolean dontEscape)
at System.Uri..ctor(Uri baseUri, String relativeUri)
at System.Xml.XmlResolver.ResolveUri(Uri baseUri, String relativeUri)
at System.Xml.XmlUrlResolver.ResolveUri(Uri baseUri, String relativeUri)
at System.Xml.Xsl.Runtime.XmlQueryContext.GetDataSource(String uriRelative, String uriBase)
2) Мое беспокойство (и я не проверял это, так что это может быть спорным) заключается в том, что если к конечному сайту осуществляется безопасный доступ (https), и преобразование ссылается на небезопасную конечную точку REST (http), которая вызывает проблемыможет возникнуть.Это действительная проблема, или трансформация произойдет независимо?