2015-01-16 6 views
-4

Я хочу, чтобы преобразовать ниже исходного XML в Target XML с помощью XSLTПреобразование XML в XML

Источник XML -

<?xml version="1.0" standalone="yes"?> 
<Ffile_Details DayOfWeek="7/1/15"> 
<FFILE> 
    <NO_20>4410600</NO_20> 
    <FILE_NM>4410600.txt</FILE_NM> 
    <FILE_DESC>D1F_24x_6 L</FILE_DESC> 
    <VL_LVL>N/A</VL_LVL> 
</FFILE> 
</Ffile_Details> 

Target XML -

<?xml version="1.0" standalone="yes"?> 
<DFfile_Details DayOfWeek="7/1/15"> 
<DFFILE> 
    <DNO_20>4410600</DNO_20> 
    <DFILE_NM>4410600.txt</DFILE_NM> 
    <DFILE_DESC>D1F_24x_6 L</DFILE_DESC> 
    <DVL_LVL>24</DVLT_LVL> 
    <DCL_NO>6</DCL_NO> 
    <RDATE>07.01.2015</RDATE> 
</DFFILE> 
</DFfile_Details> 

  1. <DVL_LVL>24</VLT_LVL>: Значение 24 от <DFILE_DESC>. Значение может быть 12 или 24

  2. <DCL_NO>6</DCL_NO>: Значение 6 от <DFILE_DESC>. Значение может быть 4 или 6

  3. <RDATE>07.01.2015</RDATE>: Значение из <DFfile_Details DayOfWeek="7/1/15"> отформатирован DD.MM.YYYY

Мой XSLT/XPath не служат цели, как DCL_NO и DVL_LVL закодирована и RDATE я не могу тянуть это от DayOfWeek или сегодня дата должна быть в порядке -

<?xml version="1.0" standalone="yes"?> 
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> 
<xsl:output method="xml" indent="yes"/> 
<xsl:template match="/"> 
    <DFFILE> 
    <DNO_20><xsl:value-of select="Ffile_Details/FFILE/NO_20" /></DNO_20> 
    <DFILE_NM><xsl:value-of select="Ffile_Details/FFILE/FILE_NM" /></DFILE_NM> 
    <DVL_LVL><xsl:value-of select="24" /></DVL_LVL> 
    <DCL_NO><xsl:value-of select="6" /></DCL_NO> 
    <RELEASE_DT><xsl:value-of select="@DayOfWeek"/></RELEASE_DT> 
    <DFILE_DESC><xsl:value-of select="Ffile_Details/FFILE/FILE_DESC" /></DFILE_DESC> 
</DFFILE> 
</xsl:template> 
</xsl:stylesheet> 
+3

Может быть, вы могли бы включать ваше преобразование XSLT и объяснить, что это не работает по этому поводу? –

+0

Добро пожаловать в stackoverflow. Пожалуйста, покажите нам, что у вас есть. SO не является службой написания кода, и вы получите лучший ответ, если будете предоставлять доказательства своей работы. См. [Страницы справки] (http://stackoverflow.com/help). – freefaller

ответ

-1

Самый простой способ - использовать XSL 2.0. Для того, чтобы сделать это изменение второй строки в:

`<xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">` 

XSL 2.0 имеет многочисленные функции replace(,,,) с регулярным выражением и format-date(), чтобы помочь с форматом даты.

Имейте в виду ваш XSL трансформатор может не иметь поддержки XSL 2.0

+0

Не совсем ответ. Изменение атрибута 'version' не приводит к ожидаемому результату, описанному в вопросе. –

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