Hello Everyone! So, I have to teach myself myself XML, XSL, et al., for work... (The VB stuff is in the background for now!) I started playing with XML yesterday, and have gotten pretty far along. But... I have to deal with M$-generated XML files that looks like the following (I added the first two lines for display in a browser): <?xml version="1.0"?> <?xml-stylesheet type="text/xsl" href="SOURCES.xsl"?> <xml xmlns:s='uuid:BDC6E3F0-6DA3-11d1-A2A3-00AA00C14882' xmlns:dt='uuid:C2F41010-65B3-11d1-A29F-00AA00C14882' xmlns:rs='urn:schemas-microsoft-com:rowset' xmlns:z='#RowsetSchema'> <s:Schema id='RowsetSchema'> <s:ElementType name='row' content='eltOnly'> <s:AttributeType name='ID305B' rs:number='1' rs:nullable='true' rs:maydefer='true' rs:writeunknown='true'> <s:datatype dt:type='string' dt:maxLength='50'/> </s:AttributeType> [snip] <s:extends type='rs:rowbase'/> </s:ElementType> </s:Schema> <rs:data> <z:row ID305B='MA11002' CYCLE='2002' USE_ID='537' CAUSE_ID='226' SOURCE_ID='180' CONFIRMED='N'/> [~11,000 lines snipped] So, I wrote the following SOURCES.xsl file to display this beast in a browser (it uses recursion): <?xml version='1.0'?> <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:rs='urn:schemas-microsoft-com:rowset' xmlns:z='#RowsetSchema' version="1.0"> <xsl:template match="/"> <HTML> <BODY topmargin="0" leftmargin="0"> <xsl:apply-templates select="/xml/rs:data"/> </BODY> </HTML> </xsl:template> <xsl:key name="rows-by-AU" match="z:row" use="@ID305B" /> <xsl:template match="z:row"> <xsl:apply-templates select="key('rows-by-AU', ID305B)" /> <div AU_ID="{ID305B}"> <xsl:apply-templates select="key('rows-by-AU', ID305B)" /> <div USE_ID="{CYCLE}"> <div USE_ID="{USE_ID}"> <xsl:value-of select="@ID305B"/> (<xsl:value-of select="@CYCLE"/>): <xsl:apply-templates select="key('rows-by-AU', USE_ID)"/> <xsl:value-of select="@USE_ID"/> - <xsl:value-of select="@CAUSE_ID"/> - <xsl:value-of select="@SOURCE_ID"/> </div> </div> </div> </xsl:template> </xsl:stylesheet> And it works (surprised the hell out of me)! But now I'm having the hardest time figuring out how to format this the way I'd like. This is how it currently looks in the browser: MA11002 (2002): 537 - 226 - 180 MA11002 (2002): 537 - 448 - 140 MA11002 (2002): 538 - 226 - 180 MA11002 (2002): 538 - 413 - 140 MA11002 (2002): 538 - 413 - 177 MA11002 (2002): 539 - 226 - 180 MA11002 (2002): 539 - 413 - 140 MA11002 (2002): 541 - 226 - 180 MA11002 (2002): 541 - 478 - 140 MA11002 (2002): 541 - 413 - 140 MA11018 (2002): 538 - 413 - 140 MA11018 (2002): 539 - 413 - 140 MA11018 (2002): 541 - 413 - 140 MA11019 (2002): 537 - 312 - 140 MA11019 (2002): 538 - 312 - 140 MA11019 (2002): 539 - 312 - 140 MA11019 (2002): 541 - 312 - 140 [... other IDs in between 2002 and 2008 ...] MA11002 (2008): 537 - 226 - 180 MA11002 (2008): 537 - 478 - 92 MA11002 (2008): 537 - 312 - 156 [... thousands of additional IDs ...] And I'd like the output to look something like: MA11002 (2002): 537 - 226 - 180 - 448 - 140 538 - 226 - 180 - 413 - 140 - 177 539 - 226 - 180 - 413 - 140 MA11002 (2008): 537 - 226 - 180 - 478 - 92 - 312 - 156 [...] So, things would need to be grouped by ID305B and CYCLE, then by USE_ID, then by CAUSE_ID, then by SOURCE_ID. But, I'd even settle for output that looks like: MA11002 (2002): 537 - 226 - 180 MA11002 (2002): 537 - 448 - 140 MA11002 (2002): 538 - 226 - 180 MA11002 (2002): 538 - 413 - 140 MA11002 (2002): 538 - 413 - 177 MA11002 (2002): 539 - 226 - 180 MA11002 (2002): 539 - 413 - 140 MA11002 (2002): 541 - 226 - 180 MA11002 (2002): 541 - 478 - 140 MA11002 (2002): 541 - 413 - 140 MA11002 (2008): 537 - 226 - 180 MA11002 (2008): 537 - 478 - 92 MA11002 (2008): 537 - 312 - 156 [... thousands of additional IDs ...] where the IDs from the two different years are adjacent to one another... I believe this will involve much pain and suffering while I try to figure out such things as XML nodes, grouping, sorting, and the like... But, I'm hoping someone will look at this and say "boy Daukas, that's easy... just do this, and then that, and voila - your done!". Anyone? Anyone? ;-) Thanks in advance for any help! Steve
I just went through some painful debug session(s) with my ISP. For some reason, after forcing 10 base T half duplex through my windows box directly to my modem (I do not expect ISPs to support linux),everything suddenly worked (after reconnection and re-enabling of course). How often does this kind of thing happen? I have seen this kind of thing before only once before, and I was using an old hub that only supported 10 base T, not a home router that is supposed to autodetect the port type. I remember that the modem only supports 10 base T, but I am not 100% certain. Does anybody have an explanation of what most likely happened? Do not hesitate to skimp on technical details or references if is convenient. I desperately want to understand what happened. -- kstratton@fastmail.us
kstratton@fastmail.us wrote:
I just went through some painful debug session(s) with my ISP. For some reason, after forcing 10 base T half duplex through my windows box directly to my modem (I do not expect ISPs to support linux),everything suddenly worked (after reconnection and re-enabling of course).
How often does this kind of thing happen? I have seen this kind of thing before only once before, and I was using an old hub that only supported 10 base T, not a home router that is supposed to autodetect the port type. I remember that the modem only supports 10 base T, but I am not 100% certain.
Does anybody have an explanation of what most likely happened? Do not hesitate to skimp on technical details or references if is convenient. I desperately want to understand what happened.
Actually, that sounds like it's a problem on the PC end. Here's why. Back when there was only 10 half, it was easy to figure out what speed and duplex the other end was running at - 10 half! With 100M ethernet appearing, though, you soon had dual speed cards on the market. Rather than having to configure each and every port explicitly, users wanted to be able to plug in and have the card just do the right thing. Luckily, the signaling was different enough between 10 and 100 that it was relatively straightforward for a 100M card to detect whether the other end was speaking in 10M or 100M, and shift speeds appropriately. This is called, simply enough, autosense. However, speed is only half the equation. Along with 100M ethernet came switches. Switches, by allowing for a pseudo-dedicated link per machine (as opposed to hubs, in which the bandwidth of all links was shared by all stations), introduced and entirely new operating mode - full duplex. Unlike speed, there is no reliable way to passively detect what duplex the other end is configured for. So, to solve this, and also to lay down a foundation for interoperability as future network speeds appeared, the autonegotiation protocol was developed. Essentially, as soon as a link is established, both ends send a few magic packets at each other advertising what speed and duplex combinations it supports. The two ends pick the highest performance option supported by both, switch to that operational mode, and go on their merry way. Even after all this, you'll still see devices appearing which only support 10 half, and don't bother to do autonegotiation. When a newer device that does support autonegotiation is plugged into such an older device, autonegotiation will (obviously) fail. The new end will then default to autodetection for the speed, and will always use half duplex. This is why forcing on end of a link to full duplex, and leaving the other end on auto, will virtually always result in a duplex mismatch, and a link that works, just with really, really crappy performance. Donald Becker used to have a paper floating around describing this in a little more detail. I can't find the original anymore, but this looks like a copy of the same info: http://www.negotiateddata.com/files/Bunch_Article_020095.pdf So in the scenario you described, where the other end is sitting fixed at 10 half, it would have been up to your computer to gracefully fail autonegotiation, and use autosense to configure the link at 10 half. Sadly, such bugs, where chipset manufacturers assume that everyone else out there will always support autonegotiation, are not unheard of these days. -- Frank Sweetser fs at wpi.edu | For every problem, there is a solution that WPI Senior Network Engineer | is simple, elegant, and wrong. - HL Mencken GPG fingerprint = 6174 1257 129E 0D21 D8D4 E8A3 8E39 29E3 E2E8 8CEC
kstratton> I just went through some painful debug session(s) with my kstratton> ISP. For some reason, after forcing 10 base T half duplex kstratton> through my windows box directly to my modem (I do not kstratton> expect ISPs to support linux),everything suddenly worked kstratton> (after reconnection and re-enabling of course). Can you give more details on the cable modem box you're using and the PC as well? Such as what network card in the PC you are using? kstratton> How often does this kind of thing happen? I have seen this kstratton> kind of thing before only once before, and I was using an kstratton> old hub that only supported 10 base T, not a home router kstratton> that is supposed to autodetect the port type. I remember kstratton> that the modem only supports 10 base T, but I am not 100% kstratton> certain. Sun and Cisco were notirious for having problems figuring our autonegotiation on the Sun hme (Happy Meal Ethernet) cards. They'd end up 100Full on one side and 100 Half Duplex on the other. It would work, just very slowly... kstratton> Does anybody have an explanation of what most likely kstratton> happened? Do not hesitate to skimp on technical details or kstratton> references if is convenient. I desperately want to kstratton> understand what happened. -- Something didn't autonegotiate properly. Did you try powering off both devices and then powering them on starting with the cable box? Also, alot of Cable Companies lock the cable box to the first MAC (ethernet hardware address) they see coming over the link. So if you boot up with a PC, and then try to move to something else like a NAT box or a linux box acting as a NAT box, things can go wonky. Usually a hard reset of the Cablemodem will do the trick, but sometimes you need to contact the ISP and ask them to reset it for you. In your case, it really sounds like a problem with Autonegotiation. Some devices just don't do a good job, esp older equipment from before the Gigabit ethernet stage. Just to expand on Frank's email, the people who designed the Gigiabit Ethernet standard over Copper (802.xxx I can't remember) saw all the problems with the 100/10 devices and autonegotiation and explicity made AutoNeg part of the spec in a very well detailed way, so that these problems won't happen again. As a matter of fact, Gigabit ports are much smarter and don't require crossover cables either, you can just plug them into back to back, they figure out what's going on automatically and adjust. The joys of big ASICs! John
Thank you everybody for your replies. I now know that this autonegotiation issue can be potentially be a much bigger problem with 100 base T than I thought. Specifically, there is no defined mechanism in the spec to autonegotiate for 100 base T cards. If I actually have time for this, I guess I will have to find the spec and read it... My network driver (windows) is a "NVIDIA nForce MCP Networking Controller". It is an integrated network connector on a HP pavilion. I do not know of a windows equivalent to lspci, so I cannot get the actual reported hardware rev. Maybe I have to get a good live CD distro. In this case, resetting the cable modem did not fix the problem, although it may have fixed it in the past. My router is a four port Linksys Router about 5 to 8 years old. My modem is a Speedstream 5280. I am sufficiently annoyed by this problem to consider buying a new router if this router has a force 10 base T option for the WAN. I am willing to listen to any suggestions. On Fri, 30 Nov 2007 16:29:17 -0500, "John Stoffel" <john@stoffel.org> said:
kstratton> I just went through some painful debug session(s) with my kstratton> ISP. For some reason, after forcing 10 base T half duplex kstratton> through my windows box directly to my modem (I do not kstratton> expect ISPs to support linux),everything suddenly worked kstratton> (after reconnection and re-enabling of course).
Can you give more details on the cable modem box you're using and the PC as well? Such as what network card in the PC you are using?
kstratton> How often does this kind of thing happen? I have seen this kstratton> kind of thing before only once before, and I was using an kstratton> old hub that only supported 10 base T, not a home router kstratton> that is supposed to autodetect the port type. I remember kstratton> that the modem only supports 10 base T, but I am not 100% kstratton> certain.
Sun and Cisco were notirious for having problems figuring our autonegotiation on the Sun hme (Happy Meal Ethernet) cards. They'd end up 100Full on one side and 100 Half Duplex on the other. It would work, just very slowly...
kstratton> Does anybody have an explanation of what most likely kstratton> happened? Do not hesitate to skimp on technical details or kstratton> references if is convenient. I desperately want to kstratton> understand what happened. --
Something didn't autonegotiate properly. Did you try powering off both devices and then powering them on starting with the cable box?
Also, alot of Cable Companies lock the cable box to the first MAC (ethernet hardware address) they see coming over the link. So if you boot up with a PC, and then try to move to something else like a NAT box or a linux box acting as a NAT box, things can go wonky.
Usually a hard reset of the Cablemodem will do the trick, but sometimes you need to contact the ISP and ask them to reset it for you.
In your case, it really sounds like a problem with Autonegotiation. Some devices just don't do a good job, esp older equipment from before the Gigabit ethernet stage.
Just to expand on Frank's email, the people who designed the Gigiabit Ethernet standard over Copper (802.xxx I can't remember) saw all the problems with the 100/10 devices and autonegotiation and explicity made AutoNeg part of the spec in a very well detailed way, so that these problems won't happen again. As a matter of fact, Gigabit ports are much smarter and don't require crossover cables either, you can just plug them into back to back, they figure out what's going on automatically and adjust.
The joys of big ASICs!
John _______________________________________________ Wlug mailing list Wlug@mail.wlug.org http://mail.wlug.org/mailman/listinfo/wlug
-- kstratton@fastmail.us
I've got a Linksys WRT54GL which in my opinion is a great router for the price. I then flashed it with dd-wrt. Here is a list of routers which can support it. http://www.dd-wrt.com/wiki/index.php/Supported_Devices -Conner On Dec 1, 2007 6:39 AM, <kstratton@fastmail.us> wrote:
Thank you everybody for your replies. I now know that this autonegotiation issue can be potentially be a much bigger problem with 100 base T than I thought. Specifically, there is no defined mechanism in the spec to autonegotiate for 100 base T cards. If I actually have time for this, I guess I will have to find the spec and read it...
My network driver (windows) is a "NVIDIA nForce MCP Networking Controller". It is an integrated network connector on a HP pavilion. I do not know of a windows equivalent to lspci, so I cannot get the actual reported hardware rev. Maybe I have to get a good live CD distro.
In this case, resetting the cable modem did not fix the problem, although it may have fixed it in the past.
My router is a four port Linksys Router about 5 to 8 years old. My modem is a Speedstream 5280. I am sufficiently annoyed by this problem to consider buying a new router if this router has a force 10 base T option for the WAN. I am willing to listen to any suggestions.
On Fri, 30 Nov 2007 16:29:17 -0500, "John Stoffel" <john@stoffel.org> said:
kstratton> I just went through some painful debug session(s) with my kstratton> ISP. For some reason, after forcing 10 base T half duplex kstratton> through my windows box directly to my modem (I do not kstratton> expect ISPs to support linux),everything suddenly worked kstratton> (after reconnection and re-enabling of course).
Can you give more details on the cable modem box you're using and the PC as well? Such as what network card in the PC you are using?
kstratton> How often does this kind of thing happen? I have seen this kstratton> kind of thing before only once before, and I was using an kstratton> old hub that only supported 10 base T, not a home router kstratton> that is supposed to autodetect the port type. I remember kstratton> that the modem only supports 10 base T, but I am not 100% kstratton> certain.
Sun and Cisco were notirious for having problems figuring our autonegotiation on the Sun hme (Happy Meal Ethernet) cards. They'd end up 100Full on one side and 100 Half Duplex on the other. It would work, just very slowly...
kstratton> Does anybody have an explanation of what most likely kstratton> happened? Do not hesitate to skimp on technical details or kstratton> references if is convenient. I desperately want to kstratton> understand what happened. --
Something didn't autonegotiate properly. Did you try powering off both devices and then powering them on starting with the cable box?
Also, alot of Cable Companies lock the cable box to the first MAC (ethernet hardware address) they see coming over the link. So if you boot up with a PC, and then try to move to something else like a NAT box or a linux box acting as a NAT box, things can go wonky.
Usually a hard reset of the Cablemodem will do the trick, but sometimes you need to contact the ISP and ask them to reset it for you.
In your case, it really sounds like a problem with Autonegotiation. Some devices just don't do a good job, esp older equipment from before the Gigabit ethernet stage.
Just to expand on Frank's email, the people who designed the Gigiabit Ethernet standard over Copper (802.xxx I can't remember) saw all the problems with the 100/10 devices and autonegotiation and explicity made AutoNeg part of the spec in a very well detailed way, so that these problems won't happen again. As a matter of fact, Gigabit ports are much smarter and don't require crossover cables either, you can just plug them into back to back, they figure out what's going on automatically and adjust.
The joys of big ASICs!
John _______________________________________________ Wlug mailing list Wlug@mail.wlug.org http://mail.wlug.org/mailman/listinfo/wlug
--
kstratton@fastmail.us
_______________________________________________ Wlug mailing list Wlug@mail.wlug.org http://mail.wlug.org/mailman/listinfo/wlug
kstratton> Thank you everybody for your replies. I now know that this kstratton> autonegotiation issue can be potentially be a much bigger kstratton> problem with 100 base T than I thought. Specifically, kstratton> there is no defined mechanism in the spec to autonegotiate kstratton> for 100 base T cards. If I actually have time for this, I kstratton> guess I will have to find the spec and read it... Don't bother, it's not going to help you really. Just recognize that you can see auto-neg issues and keep it in mind when trouble shooting problems. kstratton> My network driver (windows) is a "NVIDIA nForce MCP kstratton> Networking Controller". It is an integrated network kstratton> connector on a HP pavilion. I do not know of a windows kstratton> equivalent to lspci, so I cannot get the actual reported kstratton> hardware rev. Maybe I have to get a good live CD distro. Hmm... I thought you were having auto-neg problems between your PC and the cable modem, you never said you had a Router in there. At least I don't remember and it's monday and I'm not good at memory... :] kstratton> In this case, resetting the cable modem did not fix the kstratton> problem, although it may have fixed it in the past. kstratton> My router is a four port Linksys Router about 5 to 8 years kstratton> old. My modem is a Speedstream 5280. I am sufficiently kstratton> annoyed by this problem to consider buying a new router if kstratton> this router has a force 10 base T option for the WAN. I am kstratton> willing to listen to any suggestions. So just to rehash the problem, you are seeing problems between the router and the cable modem, or between the router and the PC? Ok, so I just re-read your initial post and it sounds like you pulled the Router out of the mix when debugging with your ISP. What was the initial problem that had you remove the Router? What were the symptoms? It could simply be that one of the hardware boxes is getting flaky and starting to fail. But we need more information to really help. I've got an old Motorola Cable Modem (bought my own replacement) which I'd be willing sell/lend if need be. I think it's a 3200 something or other. Don't remember off hand. I'm with Charter, which might be an issue. Good luck, John
My initial problem was that I lost all connectivity with my router connected to the DSL modem. this was after my setup worked consistently for over 9 months. I was on the phone for over 4 hours total (2 sessions, the first one blamed it on an outage). The ISP technicians can "see" the modem when I was having this problem and confirmed my setup of the router. All the LEDs were positive (green). The ISP technician then asked for me to connect the modem directly to the computer. Various things were tried, including powering down the modem and computer. Still no connection (ping would not work). The last thing tried was to force the computer to talk to the mode at 1/2 duplex 10 base T and try to connect. This seemed to kickstart everything and everything now works with the router or directly to the PC. This may also seem to be a coincidence, but this problem happened about a week and a half after changing the terms on my DSL service (cheaper bundle). It is looking like the solution is one of the following: 1) Buy a new DSL modem that sopports 10 and 100 base T (I think I saw one at best buy, mine only supports 10 base T) 2) Buy a router that I can put linux on so that I can configure the router for 10 base T.this sounds like fun, but the likelyhood of eventually breaking it is great. 3) Buy both a new modem and router. I am confident that my equipment predated the gigabit standard release, so this is not a totally irrational solution (based on the autonegotiation standards). 4) Ignore the issue and kickstart the connection again if the problem re-occurs. My guess is on #4 for now, but #1 then #2 or #3 is still a possibility. Thank you everybody for your help. My biggest issue was not realizing that this kind of autonegotiation issue is not very unusual. I REALLY dislike it when I call tech support and my equipment is at fault. On Mon, 3 Dec 2007 12:18:24 -0500, "John Stoffel" <john@stoffel.org> said:
kstratton> Thank you everybody for your replies. I now know that this kstratton> autonegotiation issue can be potentially be a much bigger kstratton> problem with 100 base T than I thought. Specifically, kstratton> there is no defined mechanism in the spec to autonegotiate kstratton> for 100 base T cards. If I actually have time for this, I kstratton> guess I will have to find the spec and read it...
Don't bother, it's not going to help you really. Just recognize that you can see auto-neg issues and keep it in mind when trouble shooting problems.
kstratton> My network driver (windows) is a "NVIDIA nForce MCP kstratton> Networking Controller". It is an integrated network kstratton> connector on a HP pavilion. I do not know of a windows kstratton> equivalent to lspci, so I cannot get the actual reported kstratton> hardware rev. Maybe I have to get a good live CD distro.
Hmm... I thought you were having auto-neg problems between your PC and the cable modem, you never said you had a Router in there. At least I don't remember and it's monday and I'm not good at memory... :]
kstratton> In this case, resetting the cable modem did not fix the kstratton> problem, although it may have fixed it in the past.
kstratton> My router is a four port Linksys Router about 5 to 8 years kstratton> old. My modem is a Speedstream 5280. I am sufficiently kstratton> annoyed by this problem to consider buying a new router if kstratton> this router has a force 10 base T option for the WAN. I am kstratton> willing to listen to any suggestions.
So just to rehash the problem, you are seeing problems between the router and the cable modem, or between the router and the PC?
Ok, so I just re-read your initial post and it sounds like you pulled the Router out of the mix when debugging with your ISP. What was the initial problem that had you remove the Router? What were the symptoms?
It could simply be that one of the hardware boxes is getting flaky and starting to fail. But we need more information to really help.
I've got an old Motorola Cable Modem (bought my own replacement) which I'd be willing sell/lend if need be. I think it's a 3200 something or other. Don't remember off hand. I'm with Charter, which might be an issue.
Good luck, John _______________________________________________ Wlug mailing list Wlug@mail.wlug.org http://mail.wlug.org/mailman/listinfo/wlug
-- kstratton@fastmail.us
On Monday 03 December 2007, kstratton@fastmail.us wrote:
It is looking like the solution is one of the following:
1) Buy a new DSL modem that sopports 10 and 100 base T (I think I saw one at best buy, mine only supports 10 base T) 2) Buy a router that I can put linux on so that I can configure the router for 10 base T.this sounds like fun, but the likelyhood of eventually breaking it is great. 3) Buy both a new modem and router. I am confident that my equipment predated the gigabit standard release, so this is not a totally irrational solution (based on the autonegotiation standards). 4) Ignore the issue and kickstart the connection again if the problem re-occurs.
My guess is on #4 for now, but #1 then #2 or #3 is still a possibility.
Thank you everybody for your help. My biggest issue was not realizing that this kind of autonegotiation issue is not very unusual. I REALLY dislike it when I call tech support and my equipment is at fault.
what kind of modem is it ? ive collected a few dsl modems that are just gathering dust in my basement. -mike
participants (6)
-
Conner Finlay
-
Frank Sweetser
-
John Stoffel
-
kstratton@fastmail.us
-
Mike Frysinger
-
Stephen Daukas