WedX - журнал о программировании и компьютерных науках

Логика «для каждого» на дочернем узле пропускает родительские узлы без дочерних элементов.

Я новичок в xslt, и единственный способ показать все дочерние узлы — это сделать для каждого в начале xslt. Однако сейчас родители без детей пропали. Обратите внимание, что xml должен быть плоским csv и работает нормально, за исключением пропуска родителей, где отсутствует узел «».

xlst:
 <wd:Report_Data xmlns:wd="urn:com.workday.report/Report">
<wd:Report_Entry>
    <wd:Employee_ID>100099999</wd:Employee_ID>
    <wd:ADDRESS>Any Street</wd:ADDRESS>
    <wd:CITY>Any City</wd:CITY>
    <wd:PTIN>45-9999999</wd:PTIN>
    <wd:Part_3_-_Employer_provided_self-insured_coverage>1</wd:Part_3_-_Employer_provided_self-insured_coverage>
    <wd:Part_3_-_Covered_Individuals>
        <wd:NAME>Jane</wd:NAME>
        <wd:NAME2>Doe</wd:NAME2>
        <wd:TIN>999999998</wd:TIN>
    </wd:Part_3_-_Covered_Individuals>
    <wd:Part_3_-_Covered_Individuals>
        <wd:Covered_Individual_Name>Jaelyn Polanco</wd:Covered_Individual_Name>
        <wd:NAME>Jean</wd:NAME>
        <wd:NAME2>Doe</wd:NAME2>
        <wd:TIN>999999999</wd:TIN>
    </wd:Part_3_-_Covered_Individuals>
</wd:Report_Entry>
<wd:Report_Entry>
    <wd:Employee_ID>100099998</wd:Employee_ID>
    <wd:ADDRESS>Any Street</wd:ADDRESS>
    <wd:CITY>Any City</wd:CITY>
    <wd:PTIN>45-9999999</wd:PTIN>
    <wd:Part_3_-_Employer_provided_self-insured_coverage>0</wd:Part_3_-_Employer_provided_self-insured_coverage>
</wd:Report_Entry>
</wd:Report_Data>  

XSLT:

 <xsl:for-each select="wd:Report_Data/wd:Report_Entry/wd:Part_3_-_Covered_Individuals">

                <xsl:choose>
                    <xsl:when test="../wd:Part_3_-_Employer_provided_self-insured_coverage !=1 "  > 
                        <xsl:value-of select="$quote" /><xsl:value-of select="../wd:PTIN"/><xsl:value-of select="$quote" /><xsl:value-of select="$delimiter" />
                    </xsl:when>
                    <xsl:otherwise> 
                        <xsl:value-of select="$quote" /><xsl:value-of select="../wd:PTIN"/><xsl:value-of select="$quote" /><xsl:value-of select="$delimiter" />
                    </xsl:otherwise>
                </xsl:choose>   

    <!-- <xsl:value-of select="$quote" /><xsl:value-of select="../wd:PTIN"/><xsl:value-of select="$quote" /><xsl:value-of select="$delimiter" />-->

                <xsl:choose>
                    <xsl:when test="../wd:EE_SSN=wd:TIN"  > 
                        <xsl:value-of select="$quote" />    <xsl:text>S</xsl:text><xsl:value-of select="$quote" /><xsl:value-of select="$delimiter" />
                    </xsl:when>
                    <xsl:otherwise> 
                            <xsl:value-of select="$quote" /><xsl:text>D</xsl:text><xsl:value-of select="$quote" /><xsl:value-of select="$delimiter" />
              </xsl:otherwise>
02.05.2016

  • Пожалуйста, очистите свой вопрос, а также включите ожидаемый результат. 02.05.2016

Ответы:


1

Ваш вопрос совершенно непонятен, кроме этой части:

единственный способ отобразить все дочерние узлы — это сделать для каждого в начале xslt. Однако сейчас родители без детей пропали.

Это просто неправда. Рассмотрим следующий ввод:

XML

<root>
   <parent>
        <parent-id>101</parent-id>
        <child>
            <child-id>101-A</child-id>
        </child>
        <child>
            <child-id>101-B</child-id>
        </child>
   </parent>
   <parent>
        <parent-id>102</parent-id>
   </parent>
   <parent>
        <parent-id>103</parent-id>
        <child>
            <child-id>103-A</child-id>
        </child>
   </parent>
</root>

Применение следующей таблицы стилей:

XSLT 1.0

<xsl:stylesheet version="1.0" 
xmlns:xsl="https://www.w3.org/1999/XSL/Transform">
<xsl:output method="text"/>

<xsl:template match="parent[not(child)]">
    <xsl:value-of select="parent-id"/>
    <xsl:text>&#10;</xsl:text>
</xsl:template>

<xsl:template match="child">
    <xsl:value-of select="../parent-id"/>
    <xsl:text>,</xsl:text>
    <xsl:value-of select="child-id"/>
    <xsl:text>&#10;</xsl:text>
</xsl:template>

<xsl:template match="text()"/>

</xsl:stylesheet>

приведет к:

101,101-A
101,101-B
102
103,103-A

то есть строка для каждого дочернего элемента, а также для каждого бездетного родителя.

02.05.2016
Новые материалы

Объяснение документов 02: BERT
BERT представил двухступенчатую структуру обучения: предварительное обучение и тонкая настройка. Во время предварительного обучения модель обучается на неразмеченных данных с помощью..

Как проанализировать работу вашего классификатора?
Не всегда просто знать, какие показатели использовать С развитием глубокого обучения все больше и больше людей учатся обучать свой первый классификатор. Но как только вы закончите..

Работа с цепями Маркова, часть 4 (Машинное обучение)
Нелинейные цепи Маркова с агрегатором и их приложения (arXiv) Автор : Бар Лайт Аннотация: Изучаются свойства подкласса случайных процессов, называемых дискретными нелинейными цепями Маркова..

Crazy Laravel Livewire упростил мне создание электронной коммерции (панель администратора и API) [Часть 3]
Как вы сегодня, ребята? В этой части мы создадим CRUD для данных о продукте. Думаю, в этой части я не буду слишком много делиться теорией, но чаще буду делиться своим кодом. Потому что..

Использование машинного обучения и Python для классификации 1000 сезонов новичков MLB Hitter
Чему может научиться машина, глядя на сезоны новичков 1000 игроков MLB? Это то, что исследует это приложение. В этом процессе мы будем использовать неконтролируемое обучение, чтобы..

Учебные заметки: создание моего первого пакета Node.js
Это мои обучающие заметки, когда я научился создавать свой самый первый пакет Node.js, распространяемый через npm. Оглавление Глоссарий I. Новый пакет 1.1 советы по инициализации..

Забудьте о Matplotlib: улучшите визуализацию данных с помощью умопомрачительных функций Seaborn!
Примечание. Эта запись в блоге предполагает базовое знакомство с Python и концепциями анализа данных. Привет, энтузиасты данных! Добро пожаловать в мой блог, где я расскажу о невероятных..


Для любых предложений по сайту: [email protected]