Очистка XML с помощью XSLT [дубликат]

Чтобы решить эту проблему, вот что я сделал и добился успеха. Это должно быть задокументировано в официальной документации DASH

####################################
import dash_core_components as dcc
import dash_html_components as html
from dash import Dash
from dash.dependencies import Input, State, Output

from flask          import Flask, flash, redirect, render_template,    request, session, abort, url_for, json, make_response

url_router=''

@application.route("/view_tables", methods=['GET','POST'])
def view_tabales:
  # Logic for displaying dashboard using Dash
  server.layout = html.Div(
                    children=[
                    #division for graph 1
                    html.Div([html.H1(children='Capital Charge'),],className='text-center'),

                    html.Div([html.Div([html.H3(children='''Correlation for assets'''),],className='text-primary'),
                                # define the graph
                                dcc.Graph(
                                    id='Delta-graph',
                                    figure={
                                        'data': [
                                            {'x': df_delta['Correlation_Level'], 
                                             'y': df_delta['Capital_Charge'], 
                                             'type': 'bar', 
                                             'name': 'Delta',
                                             #'domain': {'x': [0, .48],'y': [0, .49]},
                                             }
                                        ],
                                        # sizes the graph
                                        'layout': {
                                            'title': 'Delta','margin': {'l': 10, 'r': 0, 't': 30, 'b': 10},
                                            "height":300,
                                        }
                                    }
                                )],className='col-md-4'),
  url_router = 'Dash(__name__,server=application, url_base_pathname="/dash")'

. Затем вы можете управлять той панелью, из которой она направляется из внутренней колбы

if url_router !='':
      server = url_router

server.layout = html.Div(children = [html.H1(children = ' MEP dashboard - error 404')])


# run the app.
if __name__ == "__main__":
   # Setting debug to True enables debug output. This line should be
   # removed before deploying a production app.
   server.secret_key = os.urandom(12)
   server.run_server(debug=True,port=5000)

, вы можете создавать различные функции с разными графиками между Код фляжки и продолжайте вызывать код в тире

51
задан Larry 31 August 2009 в 17:47
поделиться

3 ответа

Вам нужно объявить пространство имен в XSLT и использовать его в выражениях XPath. Например ::

<xsl:stylesheet ... xmlns:my="http://www.mysite.com">

   <xsl:template match="/my:MyRoot"> ... </xsl:template>

</xsl:stylesheet>

Обратите внимание, что вы должны предоставить некоторый префикс, если вы хотите ссылаться на элементы из этого пространства имен в XPath. Хотя вы можете просто сделать xmlns="..." без префикса, и он будет работать для литеральных элементов результата, он не будет работать для XPath - в XPath, неподписанное имя всегда считается в пространстве имен с пустым URI, независимо от xmlns="..." в области.

56
ответ дан Pavel Minaev 25 August 2018 в 22:27
поделиться
  • 1
    Спасибо за ответ. Это похоже на то, что я нашел в Интернете, но он не работает. Мой вывод XML по-прежнему не работает должным образом. Если я удалю пространство имен по умолчанию из исходного XML, тогда вывод XML выглядит отлично. Мое приложение, использующее перевод XSLT, является приложением .NET 2.0, если это имеет значение. – Larry 28 August 2009 в 00:09
  • 2
    Пожалуйста, покажите свой XLST, который не работает. Трудно сказать ничего более определенного, не видя этого. То, что вы описываете, по-прежнему звучит так, будто вы пропустили квалификатор пространства имен somwhere . Например, имейте в виду, что вам нужно повторить его для каждого шага XPath, то есть /my:MyRoot/my:foo/my:bar. – Pavel Minaev 28 August 2009 в 00:22
  • 3
    Действительно полезная заметка о необходимости префикса. Это заставило меня проверить спецификации. Похоже, XPath будет уважать пространство имен по умолчанию, если оно присутствует, но XSLT явно исключает пространство имен по умолчанию из области видимости w3.org/TR/xslt#section-Expressions – Dominic Cronin 1 September 2014 в 16:23
  • 4
    @PavelMinaev: Я использовал /my:MyRoot в моем xPath, так что совпадение с шаблоном выглядит следующим образом: <xsl:template match="/my:MyRoot"> - так что такое MyRoot - это зарезервированное имя в XSLT? – Our Man in Bananas 2 September 2014 в 15:27
  • 5
    Нет, это просто имя элемента. Вы должны использовать все, что есть имя внешнего элемента для вашего XML. – Pavel Minaev 4 September 2014 в 18:09

Если вы используете XSLT 2.0, укажите xpath-default-namespace="http://www.example.com" в разделе stylesheet.

23
ответ дан Daniel Haley 25 August 2018 в 22:27
поделиться

Если это была проблема с пространством имен, есть возможность попытаться изменить две вещи в файле xslt:

  • добавить определение «моего» пространства имен в xsl: tagheet tag
  • использовать префикс «my:» при вызове элементов при перемещении xml-файла.

result

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
  xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:my="http://www.w3.org/2001/XMLSchema">
    <xsl:template match="/" >
        <soap:Envelope xsl:version="1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
            xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
            <soap:Body>
                <NewRoot xmlns="http://wherever.com">
                    <NewChild>
                        <ChildID>ABCD</ChildID>
                        <ChildData>
                            <xsl:value-of select="/my:MyRoot/my:MyChild1/my:MyData"/>
                        </ChildData>
                    </NewChild>
                </NewRoot>
            </soap:Body>
        </soap:Envelope>
    </xsl:template>
</xsl:stylesheet>
3
ответ дан potame 25 August 2018 в 22:27
поделиться
Другие вопросы по тегам:

Похожие вопросы: