4. March 2011 13:28
As I was building a nice little XSLT I was encountering NaN (Not a Number) in my database. Here is the offending code.
This code can potentially return the NaN as a value because of the number function.
To solve this I used the test function in XSLT. My finally solution looks like this:
Using the test I can determine that the resulting number NaN is not contained within my second express:
If it’s true I just set it to be the default number. Otherwise I pull the value of the number. To test this you can use the xslt test tool built into Visual Studio 2008/2010.
Wow that's backwards isn't it. Basically comparing NaN != NaN would = true and a Number != NaN would = false. My only conclusion here is that maybe because NaN isn't a comparable entity that saying (NonComparable != NonComparable) = true. Somewhat like trying to compare a null in SQL it isn't a valid comparable.
Looking at my example above, it's not very transparent either. So a better way would have been for me to further nest the number into a string and test it against 'NaN' like this:
<xsl:when test="string(number(string($RepairOrder/VehicleYear)) = 'NaN'">
<xsl:value-of select="number(string($RepairOrder/VehicleYear))"/> </xsl:when>
31. August 2010 10:43
Oh how lazy I truly is.
Currently I am doing some heavy manipulation of Xml tags. I ended up with a Excel spreadsheet of new Xml tags I wanted to generate and I wanted to build a Xml document to send off to our QA team for review. MAN was I getting sick of typing "<" and then looking at the text in my excel spreadsheet and typing it in, ensuring I get the case sensitivity correct and then typing ">". At least Visual Studio will generate the closing tag for you. But that was getting very annoying. In comes Macros in Visual Studio. So here is what I did.
- Open Macros IDE
- Click Tools
- Macros IDE...
- Add Module for your Custom Macros
- Right click the "MyMacros" in the Project Explorer
- Click Add
- Add Module
- Type in whatever name you want to name this module
- Click Add
- Program Functions inside your module.
- Public Module CreateXmlTag
- Sub SurroundWithXmlTag()
- DTE.ActiveDocument.Selection.Text = "<" + DTE.ActiveDocument.Selection.Text + ">"
- End Sub
- I didn't add the second half of the tags since Visual Studio will auto generate the closing tag. You could do many manipulations here. Like adding <b> for HTML, or whatever you want :)
- Save and Close the Macros IDE window
- Then I added the macro to a toolbar for convenience
- Click New
- Type in name of Toolbar and click Ok. You will then have a toolbar appear
- Click the "Commands" tab
- Select the radio button "Toolbar:" (Mine was GenerateXmlTag)
- Select "Add Command..."
- Under Categories scroll down to "Macros"
- Find your Macro
- Click Add
- Next I wanted to bind it to a keyboard command.
- Select Keyboard...
- I filtered by "Xml"
- Found my Command
- "Used the new shortcut in:" Xml Editor with Alt+J, Alt+K
- I can now copy and past my text from Excel
Highlight and press either my button or my keyboard command and it works like a charm.
P.S. If you don't like the ugly looking text in your toolbar. Visual Studio has a way to add a button image to a command. I personally used Ryan Molden's tool which made things much easier for me.
I hoped you enjoyed my lazy post.