Это должно быть довольно просто, но после 3 часов поисков в Интернете у меня, по-видимому, нет правильной формулировки, чтобы найти ответ.
У меня есть и XML возвращает, что мне нужно отформатировать для страница. У меня нет контроля над возвратом, поскольку он поступает из баз данных UPS.
У меня он отлично отформатирован, но теперь мне нужно увеличить ставку возврата на 4 доллара. Это должно быть легко, но я очень новичок во всем этом и в полной потере.
Вот соответствующая часть возвращенного XML:
<Response>
<ResponseStatusCode>1</ResponseStatusCode>
<ResponseStatusDescription>Success</ResponseStatusDescription></Response>
<RatedShipment>
<Service><Code>03</Code></Service>
<TotalCharges>
<CurrencyCode>USD</CurrencyCode>
<MonetaryValue>21.17</MonetaryValue></TotalCharges>
</RatedShipment>
</Response>
Вот соответствующая часть формата XSL:
<xsl:template match="/">
<select name="shipping_options" id="shipping_options">
<xsl:for-each select="/RatingServiceSelectionResponse/RatedShipment">
<xsl:choose>
<xsl:when test="Service/Code = 01">
<xsl:element name="option">
<xsl:attribute name='value'>
1!!!
<xsl:value-of select="TotalCharges/MonetaryValue"/>
</xsl:attribute>
UPS Next Day Air - $
<xsl:value-of select="format-number(TotalCharges/MonetaryValue, '###,###.00')"/>
</xsl:element>
</xsl:when>
</xsl:choose>
</xsl:for-each>
</select>
Редактировать: формат для XSL будет правильным для других нужд позже. Желаемый конечный результат выглядит следующим образом:
<select name="shipping_options" id="shipping_options">
<option value="">Enter Zip Code To Update</option>
<option value="1!!!77.49">UPS Next Day Air - $77.49</option>
<option value="2!!!51.20">UPS 2nd Day Air - $51.20</option>
<option value="3!!!22.73">UPS Ground - $22.73</option>
<option value="4!!!38.01">UPS 3 Day Select - $38.01</option>
<option value="5!!!71.02">UPS Next Day Air Saver - $71.02</option>
<option value="6!!!108.01">UPS Next Day Air Early - $108.01</option>
<option value="8!!!0.00">Please call for freight pricing - $0.00</option>
<option value="9!!!0.00">Please call for international pricing - $0.00</option>
</select>
Правка # 2: это было буквально так же просто, как и должно было быть. Просто нужно было изменить этот бит, чтобы добавить «+4»:
select="format-number(TotalCharges/MonetaryValue + 4, '###,###.00')"